当前产品有个功能就是对设备的音视频实时采集、传输、播放。在PC上已经实现。虽然Android有自己的媒体接口,但用一套库解决这些问题,就能避免重复功能开发。
FFMPEG:
请参考FFMPEG官方给出的编译向导:https://trac.ffmpeg.org/wiki/CompilationGuide/Android
在此链接中有编译脚本的集合。下载后解压,将ffmpeg的源代码copy到解压缩目录的ffmpeg文件夹中。
按照项目的github的主页上的说明步骤,就能顺利进行。
需要注意的是:
1、脚本都是基于Ubuntu制作的,想使用MSYS来编译,需要改动(我有两台机器,其中一台就是ubuntu,所以...^^)
2、如果想编译为动态库,
不光是需要修改各个模块的xx_build.sh文件中的configure选项(主要是将--enable-shared 参数加上,如果不需要静态库,也 可以去掉静态库的参数),settings.sh里面链接参数需要注释掉,要不会发生错误:
crtbegin_dynamic.o:crtbrand.c:function _start: error: undefined reference to 'main'
collect2: error: ld returned 1 exit status
library.mak:111: recipe for target 'libavutil/libavutil.so.54' failed
make: *** [libavutil/libavutil.so.54] Error 1
make: *** Waiting for unfinished jobs....
这行要注释掉:
#LDFLAGS='-Wl,-z,relro -Wl,-z,now -pie'
SDL2
官方提供的文档非常详尽。也可以从这里下载
使用
如果对快平台编译不熟悉,将NDK的GCC编译器当作PC上常见的GCC,可能会产生编译错误:
ld: error: cannot open crtbegin_so.o: No such file or directory
需要为GCC指定参数:--sysroot=$(如:xx/android-ndk-r10e/platforms/android-21/arch-arm/)