您的位置:首页 > 移动开发 > Android开发

Android下ffmpeg、SDL的编译

2015-11-23 16:06 295 查看
当前产品有个功能就是对设备的音视频实时采集、传输、播放。在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/)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: