WINDOWS下的FFMPEG DLL编译笔记,共享给大家,希望能对大家有所帮助。
语音格式分别采用的方法如下解码:
ogg ---> vorbis
mp3 ---> lame
wma ---> ffmpeg
ffmpeg将lame,vorbis等库的解码都统一到自己的项目中,对外提供了统一的解码接口。
本文只讲如何进行ffmpeg的编译,关于ffmpeg接口的使用,请参考网络上的资料。
ffmpeg在WIN下选择MinGW编译方式而不采用其他编译的原因:
1. 采用Cygwin,其缺点:速度慢,编译后的DLL库还需要其他文件(CYGWIN1.DLL)支持
2. MSVC 不支持,FFMPEG工程组也没有打算支持MSVC
因为MSVC不支持C99标准,许多语法以及汇编的写法MSVC不支持。
过程:
1。安装MinGW, 我采用的是MinGW-5.1.6.exe程序,安装到D:\MinGW
2。下载MSYS-1.0.11.exe,msysDTK-1.0.1.exe,安装MSYS到D:\MinGW\Msys下
3。 修改D:\MinGW\Msys下的msys.bat文件,在第一行加入:
call "D:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
4。 更新MSYS:
下载coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2,将压缩包中的BIN目录内容复制到D:\MinGW\Msys\bin下
5。 下载GCC的更新文件,4.2以上,我选择4.4的文件列表:
gcc-ada-4.4.0-mingw32-dll.tar.gz
gcc-c++-4.4.0-mingw32-bin.tar.gz
gcc-c++-4.4.0-mingw32-dll.tar.gz
gcc-core-4.4.0-mingw32-bin.tar.gz
gcc-core-4.4.0-mingw32-dll.tar.gz
gmp-4.2.4-mingw32-dll.tar.gz
mpfr-2.4.1-mingw32-dll.tar.gz
将这些文件解压到D:\MinGW下
6。 修改D:\MinGW\Msys\etc下的fstab文件(如果没有,将fstab.sample复制一份,更名),将文件内容:
c:/mingw /mingw
更改为
D:/MinGW /mingw
7。 修改profile文件,在末行添加:
export PATH=.:/usr/local/bin:/mingw/bin:/bin:"/D/Program Files/Microsoft Visual Studio 9.0/VC/bin":"/D/Program Files/Microsoft Visual Studio 9.0/Common7/IDE"
8。 下载FFMPEG
9。 进入到FFMPEG的目录,使用./configure --enable-shared --disable-static --enable-small --enable-memalign-hack检查系统,准备生成DLL
10。 修改通过configure生成的config.mak,将文件中的内容替换成如下的:
SLIBNAME=$(SLIBPREF)$(NAME)$(SLIBSUF)
SLIBNAME_WITH_VERSION=$(SLIBPREF)$(NAME)$(SLIBSUF)
SLIBNAME_WITH_MAJOR=$(SLIBPREF)$(NAME)$(SLIBSUF)
11。 make 后,make install会失败,手动将dll,lib文件复制出来
12。 下载FFMPEG的SDK,使用其inttypes.h,stdint.h文件
13。使用MSVC,调用动态库编译出现模板错误使用,
解决办法:
libavutil下common.h调用的mathematics.h文件有个语句:
#include
与FFMPEG接口的使用方式(C调用方式)冲突,将其屏蔽,编译顺利通过,未见影响
阅读(7679) | 评论(0) | 转发(0) |