运行环境:  VC2010软件;                 [附:本文所用软件安装包:http://download.csdn.NET/detail/sinat_36666600/9705438]

1、下载mingw-get-setup.exe [网站:https://sourceforge.net/projects/mingw/]

安装步骤很简单,一直next就行。然后把basic setup中的 “1”点右键选择“make for installation”全部选择就行。最后点击“2”中的apply changes安装。(注:若提示错误框,或关闭下图安装框时跳出提示,且提示的大意为有的插件没有安装,则选择“Review changes”,然后选择“apply changes”可继续下载安装。直到全部安装好,没有任何错误退出最好。)

或参考网上的教程,不再赘述。

2、“我的电脑”右键“属性”,选择“高级系统设置”,点击“环境变量”。在“系统变量”框中找到“Path”,点击“编辑”,在末尾加入代码:“C:\mingw\bin;”。(注意末尾的分号,为英文输入法。根据安装的mingw的路径而改变位置)

3、用记事本的方式打开C:\mingw\msys\1.0(其中C:\mingw为安装mingw的位置。从这里也能看出,安装了mingw后自动安装了“msys”,从而不用自己再配置msys)目录中的msys.bat。在最顶部位置添加如下代码:

call "D:\Program Files\Microsoft Visual Studio 2010\VC\bin\vcvars32.bat"

其中,“D:\Program Files\Microsoft Visual Studio 2010”为软件Microsoft Visual Studio 2010的安装路径,根据安装路径的不同而对应更改即可。

效果如下图:

4、下载最新版yasm.exe [网址:http://yasm.tortall.net/Download.html] 选择“win32.exe(for general use on 32-bit windows)”根据系统的不同而改变。

为了减少配置环境变量的麻烦,本处直接把 yasm-1.1.0-win32.exe 文件名修改成:yasm.exe,并放到系统目录下:C:\WINDOWS\system32。

5、下载最新版本的ffmpeg[网站:http://www.ffmpeg.org/download.html#get-sources] 解压出来即可。

6、编译ffmpeg:

把步骤5中的压缩包解压到C:\ffmpeg后。打开“C:\mingw\msys\1.0\msys.bat”文件。

输入命令:

cd /c

cd ffmpeg

./configure --enable-memalign-hack --disable-debug

以上代码意思为:进入ffmpeg文件夹所在路径“C:\ffmpeg”。然后“./configure --enable-memalign-hack”编译ffmpeg,且“--enable-memalign-hack”必不可少!

一段时间后,显示如下错误:

7、根据网站:

http://stackoverflow.com/questions/1710922/how-to-install-pkg-config-in-windows

下载相应的安装包,然后按步骤操作:

(1)下载pkg-config_0.26-1_win32.zip

(2)解压后把“bin”文件夹下的“pkg-config.exe”文件复制到“C:\mingw\bin”下,其余文件可删除。(注:在别的地方下载的pkg-config压缩文件,解压后可能没有pkg-config.exe文件。所以建议到此网站上下载。)

(3)下载gettext-runtime_0.18.1.1-2_win32.zip

(4)解压后把“bin”文件夹下的“intl.dll”文件复制到“C:\mingw\bin”下,其余文件可删除。

(5)下载glib_2.28.8-1_win32.zip

解压后把“bin”文件夹下的“libglib-2.0-0.dll”文件复制到“C:\mingw\bin”下,其余文件可删除。

最后,再次进行步骤6。发现没有错误了,可以运行。如下图所示:

然后再进行以下两步:

make

make install

“make”时会进行长时间的编译,所以请耐心等待。最后“make install”安装。全部完成后,可在ffmpeg文件目录下发现“ffmpeg.exe”“ffprobe.exe”等文件,唯独没有“ffplay.exe”。在网上百度了下,原因是没有编译SDL。

第二部分 —— 完整编译:

首先,进行上面的1~5步骤,然后再进行下面的步骤:

1、在官网下载x264[网站:http://www.videolan.org/developers/x264.html]

然后解压到之前的ffmpeg目录下C:\ffmpeg。 然后启动C:\mingw\msys\1.0\msys.bat。输入命令,进入到x264目录下:

cd  /c

cd  ffmpeg

cd  x264

./configure  --enable-shared  --disable-asm

make

make  install

编译完成后,在C:\mingw\msys\1.0\local目录下可看到bin、include和lib文件夹,都为x264的文件。

2、下载SDL,[网站:http://www.libsdl.org/download-2.0.php] 选择其中的“SDL2-devel-2.0.5-mingw.tar.gz (MinGW 32/64-bit)”。这是已经编译好好的SDL文件,解压后直接拿来用就ok了。

将i686-w64-mingw32下的lib的所有文件复制到C:\mingw\lib;

将i686-w64-mingw32下的include的所有文件复制到C:\mingw\include;
将i686-w64-mingw32下的bin的所有文件复制到C:\mingw\bin;

3、最后,编译ffmpeg。

cd  /c

cd  ffmpeg

./configure  --enable-shared  --enable-ffplay  --enable-memalign-hack  --enable-gpl  --enable-libx264  --extra-cflags=-Ic:/mingw/msys/1.0/local/include  --extra-ldflags=-Lc:/mingw/msys/1.0/local/lib

注意:“--extra-cflags=-I”以及“--extra-ldflags=-L”后的是包含了libx264.h头文件的目录和相关库,根据相应的位置而改动,若不加那两个代码就会有如下图的错误:

耐心等待一段时间后,再:

make

make  install

没有报错,检查c:\ffmpeg文件,发现其中生成了“ffmpeg.exe”、“ffplay.exe”、“ffprobe.exe”等文件。

4、双击打开c:\ffmpeg目录下的“ffplay.exe”,弹出如下错误提示:

其实这个文件就在C:\mingw\msys\1.0\local\bin目录下。

但是打开C:\mingw\msys\1.0\local\bin目录下的“ffplay.exe”没有错误提示。将测试“h264”、“mpg”等格式的视频直接拖入这里面的ffplay.exe中可以顺利播放,但是没有声音。因为没有加入音频的编解码库。

注意事项

-1- 通过以下代码编译lame-3.97时不会有问题:

./configure --disable-shared (首选)
或    ./configure --disable-static --enable-shared
     make
     make install

但在编译ffmpeg时加入“--enable-libmp3lame”会报错,如下图:

暂时还没找到解决办法。

若编译最新版的lame-3.99.5,则会出现下图错误:

-2- 编译SDL时,会出现如下错误:

显示红色框中内容时弹出2次如下图对话框:

把编译指令改为如下,则可编译成功:

./configure  --disable-nasm

make

make  install

若编译SDL2版本,也会报错。所以,建议使用已经编译好的SDL2-devel-2.0.5-mingw.tar.gz这种文件,直接复制粘贴到对应文件夹即可。

win7_32下编译FFmpeg的更多相关文章

  1. 在Windows下编译FFmpeg详细说明

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...

  2. Android 环境下编译FFmpeg

    Android 环境下编译FFmpeg 开发环境:Ubuntu 12.04.2 LTS , android-sdk-linux, android-ndk-r8e 一 .X264 编译 1.    X2 ...

  3. Linux下编译ffmpeg并用GDB调试

    1.在Ubuntu界面上调处命令行界面,最方便的方式是使用快捷键Ctrl+Alt+T. 2.安装SDL SDL是一个开源的多媒体开发库,可以设置图像和视频的绘制等操作.如果不安装SDL,FFMPEG将 ...

  4. ffmpeg windows下编译ffmpeg

    windows下编译ffmpeg 今天由于工作需求需重新编译ffmpeg,百度,goole了一大堆,看眼花缭乱的,但几乎都是三种方案,大部分都是直接转发,一字不漏,错误的缺文件的还是照转,可是问题都大 ...

  5. linux下编译ffmpeg 引入外部库x264

    Found no assembler Minimum version is nasm-2.13 If you really want to compile without asm, configure ...

  6. VoIP应用在Ubuntu 14.04下编译FFmpeg libX264及PJSIP

    PJSIP是一个开源的SIP协议栈.它支持多种SIP的扩展功能,可说算是最目前流行的SIP协议栈之一了.  它实现了SIP.SDP.RTP.STUN.TURN和ICE.PJSIP作为基于SIP的一个多 ...

  7. windows下编译ffmpeg

    windows 编译ffmpeg 搞过很多次,每次总是磕磕碰碰,从头到尾不能一直顺利,浪费一些时间.终究起原因,都是当时记得,过段时间就忘了.好记性不如烂笔头,大好周末晚上,闲暇无事,记录最近一次编译 ...

  8. 在Windows下编译ffmpeg完全手册

    本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...

  9. window下编译ffmpeg 比较简单

    网上关于编译ffmpeg的帖子很多,我也尝试了很多次,但是很多都过不了,一部分原因是版本问题,还有就是有的路劲没说的太明白导致的,经过一天的摸索,最终编译好了,下面把编译方式写下来,希望对看到帖子的人 ...

随机推荐

  1. iOS各种问题处理

    本文转载至:http://www.cnblogs.com/ygm900/category/436923.html 推荐初学者前去学习.     mac 拷贝文件时报错 8060 解决方案 摘要: 解决 ...

  2. 重写equals()方法也要重写hashcode()方法

    如果我们对equals方法进行了重写,建议一定要对hashCode方法重写,以保证相同的对象返回相同的hash值,不同的对象返回不同的hash值.

  3. 第一次广搜!HDU1548--A Strange Lift

    一上来看见题目就用了深搜(因为只会深搜)果断内存超限(据说时间也会超限)无奈只好开始用广搜 其实广搜的思路和深搜有很多类似的地方 不过实现的过程中用到了队列 因此有点难以理解(好吧我个人认为) 这题是 ...

  4. EditText监听方法,实时的判断输入多少字符

    最近在写一个小项目,其中有一点用到了显示EditText中输入了多少个字符,像微博中显示剩余多少字符的功能.在EditText提供了一个方法addTextChangedListener实现对输入文本的 ...

  5. 制作item和category的mvc视图总结

    View层index.phg 代码: <?php use yii\helpers\Html; use yii\grid\GridView; use yii\widgets\Pjax; use f ...

  6. Python全栈day18(三元运算,列表解析,生成器表达式)

    一,什么是生成器 可以理解为一种数据类型,这种数据类型自动实现了迭代器协议(其他数据类型需要调用自己内置的__iter__方法),所以生成器是可迭代对象. 二,生成器分类在python中的表现形式 1 ...

  7. git学习(4)远程库和分支管理

    git学习(4)远程库和分支管理 1.1建立本地git库和远程库联系 我使用的是GitHub上的库,首先在GitHub上新建一个库,在建立与远程库的联系之前需要建立ssh key.建立ssh key可 ...

  8. disable的错误使用

    表单中的input设为disable后数据无法提交. 如果需要设置无法修改效果,但又想表单提交数据,可以设置readonly.

  9. ICO成本价

    [当前ICO成本价]仅供参考:ICOcoin 成本价1元SNT 成本价0.26元UGT 成本价2.7元PAY 成本价6元OMG 成本价2.6元YOYO 成本价 0.17元BNT 成本价26元BAT 成 ...

  10. lua获取table的长度

    lua在获取table的size时,不能一味的使用类似于java里面的length函数 table的存储是类似hashTable的kv形式. -- table.getn(tableName) 得到一个 ...