windows下编译ffmpeg

来源:互联网 发布:如何打造淘宝店铺爆款 编辑:程序博客网 时间:2024/06/11 18:27

最近在想编译windows上使用的ffmpeg,但是又不想使用ffmpeg官方上的现成,网上说没有导入库lib,具体我也没有去看。下面说说我在编译中遇到的问题。


总结网上一般的步骤是这样的:

1.你要去管网下载一份ffmpeg最新的代码。

2.官网下载安装minGW。安装后注意将x:\MinGW,x:\MinGW\msys\1.0\bin加入系统环境变量中。

3.官网下载yasm,改名为yasm.exe,下载后不是这个名字,注意32位,64位区别。

4.msys.bat文件第一行加入call "xx\xx\xx\vcvars32.bat",这个具体作用就是设置msvc的编译环境。

5.你如果不想看到pkg-config警告,可以官网下载一个pkg-config,为了方便你可以放入x:\MinGW\bin,当然他的依赖libglib-2.0-0.dll也是要下载的。

6.如果你使用的是vs2010及更低版本(我目前是vs2010),很不好意思你必须下载msinttypes这个包,里面有stdint.h inttypes.h,请将这两个文件放入x:\x\vc\include(你的vs安装目录)。

7.你必须下载c99-to-c89-1.0.1.zip,将里面的c99*.exe两个文件放入x:\MinGW\msys\1.0\bin中。

重命名 x:/MinGW/msys/1.0/bin/link.exe 为link_renamed.exe ,这一步是防止这个link.exe与vc的link.exe发生冲突,编译完成之后记得修改回来;

8.至此你可以编译你的ffmpeg啦,

运行msys.bat进入ffmpeg代码目录:./configure --prefix=./vsoutput --toolchain=msvc --disable-static --enable-shared回车。

使用--toolchain=msvc ffmpeg的代码版本最低必须2.3,否则不支持toolchain=msvc。

等着动态库生成,可以会有错误_BitScanReverse错误,苦逼啊!

这个时候改成这样就可以了:./configure --prefix=./vsoutput --toolchain=msvc --disable-static --enable-shared --disable-asm回车。

你还可以根据项目的需求在./configure做进一步处理,可以编译出几百K的库。



好像VS2013就没有这么多麻烦,这里给出一遍ffmpeg编译的文章url,具体没有试过。

http://blog.csdn.net/finewind/article/details/42784557



-------------------------------------------补充-------------------------------------------

以上编译环境为Win7 32bit旗舰版,VS2010 Ultimate,MinGW 1.4 for window,yasm1.3.0 win32(for general use on 32-bit Windows)。

另外上面提出的_BitScanForward,_BitScanReverse导致编译失败,需要加入disable-asm才能成功的问题。

解决方法为:在libavutil/intmath.h文件中加入

#if defined( _MSC_VER )
#include <intrin.h>
#endif

这样就解决了上面的问题,生成的文件会比上面生成的要大点,而且由于使用asm,效率比上面的好。

在我的i5-3470 4G Intel HD Graphics 2500集成显卡上跑一路720P 20fps 2Mb cpu恒定在5%-7%。


网上有说加入两行:

#pragma intrinsic(_BitScanReverse)

#pragma intrinsic(_BitScanForward)

这是解决不了问题的。


!!!!!!!!!!!!!!!!!!!!此文目前认为只适用于上面描述的环境,其他环境未做测试!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

0 0