Chinaunix首页 | 论坛 | 博客
  • 博客访问: 374582
  • 博文数量: 68
  • 博客积分: 5157
  • 博客等级: 大校
  • 技术积分: 1560
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-20 10:05
文章分类

全部博文(68)

文章存档

2013年(1)

2012年(2)

2011年(11)

2010年(9)

2009年(22)

2008年(23)

我的朋友

分类: C/C++

2010-07-12 20:49:16

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调用方式)冲突,将其屏蔽,编译顺利通过,未见影响
阅读(7688) | 评论(0) | 转发(0) |
0

上一篇:CAP理论

下一篇:OTP介绍 --- 转载

给主人留下些什么吧!~~