Windows 平台编译ffmpeg
- 首先建立交叉编译平台: 安装MINGW与msys具体参考http://www.360doc.com/content/14/1121/16/7103946_426966892.shtml里面的做法
- 修改C:\MinGW\msys\1.0路径下的文件msys.dat中的首行添加 call “D:\Program Files (x86)\Microsoft Visual Studio
10.0\VC\bin\vcvars32.bat”其中的绝对路径为所装VS的路径; - 最后打开msys.dat的过程中显示丢失msys-intl-8.dll;下载动态库并放置在文件夹C:\MinGW\msys\1.0\bin下并将其配置到path环境变量中去;
分别下载 - (1)安装Yasm ,下载yasm源码包,解压到E:\ffmpeg1.2\yasm-1.2.0目录。 用msys.dat的窗口进入yasm目录,依次执行: ./configure –-prefix=/usr/local/yasm ->make ->make install 然后通过以下命令导入yasm环境变量。 export PATH=”$PATH:/usr/local/yasm/bin”
- (2).安装SDL,下载SDL的源码包,解压到E:\ffmpeg1.2\SDL-1.12.15目录 。用msys.dat的窗口进入进入SDL目录,依次执行 ./configure -–prefix=/usr/local/SDL -> make ->make install通过以下命令导入SDL环境变量。export PATH=” PATH:/usr/local/SDL/bin"exportCINCLUDEPATH=" C_INCLUDE_PATH:/usr/local/SDL/include/SDL”export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/SDL/lib”
- (3).安装x264 ,下载X264源代码包,解压到E:\ffmpeg1.2\x264 进入到x264目示,依次执行 ./configure –enable-shared –-disable-asm -–prefix=/usr/local/x264 make make install 通过以下命令导入x264环境变量。export PATH=” PATH:/usr/local/x264/bin"exportCINCLUDEPATH=" C_INCLUDE_PATH:/usr/local/x264/include” export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/x264/lib”
- (4).安装FFmpeg,下载ffmpeg源代码包,解压到E:\ffmpeg1.2\ffmpeg1.2
进入到ffmpeg1.2目录,依次执行 ./configure –-enable-shared -–disable-static
–-enable-memalign-hack –enable-libx264 –enable-gpl
–-prefix=/usr/local/ffmpeg1.2 make make install
安装完成后,可到D:\msys\1.0\local\ffmpeg1.2目录,查看安装结果。
注意: 若需要ffmpeg支持其他视频音频编解码器,只需下载相应源代码,按照以下步骤安装: 配置(./configure)—>编译(make)—>安装(make install)—>导入环境变量(export)。 另外,在编译ffmpeg时,开启相应编解码器的配置即可。
编译Andoroid平台下使用的ffmpeg库
编译Android下的ffmpeg
- 主要考http://blog.youkuaiyun.com/huweijian5/article/details/52840177文章的做法;编写android_configure.sh文件参考该文件,下载最新版本的ffmpeg和之前编译Windows平台的源码区分开;注意android_configure.sh文件中的字符按照Linux中的字符编辑,主要是换行符的区别; 需要下载ndk并且修改android_configure.sh文件中NDK的路径为本地文件路径;最后执行即可;
注意添加enable–gpl就可以生成libpostpro.so文件 - 主要的问题是在编写Android中java文件中添加so文件的顺序 System.loadLibrary(“avutil-55”);
System.loadLibrary(“swresample-2”);
System.loadLibrary(“swscale-4”);
System.loadLibrary(“avcodec-57”);
System.loadLibrary(“avformat-57”);
System.loadLibrary(“avfilter-6”);
System.loadLibrary(“avdevice-57”);
//System.loadLibrary(“postproc-53”);
System.loadLibrary(“hello-jni”); 调整部分的顺序导致android虚拟机无法跑应用程序,这里面静态编译JNI函数,以及在Android工程中构建JNI文件夹可以参考
http://blog.youkuaiyun.com/leixiaohua1020/article/details/47008825文章中的做法,以后可以采用动态加载JNI函数。