前面介绍了Linux下编译ffmpeg的方法,考虑到大部分时候测试ffmpeg功能都是使用的windows系统(至少我是这样的),因此将战场重新转移到windows上。
前面写了那么多的代码,但都只是简单的调用了ffmpeg的API,并不知道他内部是如何实现的。如果可以在调试的时候打个断点就可以进入ffmpeg代码调试看看实现该好友多好!梦想总是要有的,万一实现了呢!百度了一下发现可以做到,下面就来讲讲实现方法。
首先我们需要自己重新编译ffmpeg的源代码,其次我们需要将之前使用的mingw编译换成vs的编译器,因为qtcreator调试实在是坑爹,现在开始我们将开发工具从qtcreator转到vs上。不过我编写代码用的还是qtcreaotr,毕竟qtreator上是可以直接调用vs编译器的,qtcreaotr只是调试的时候坑一点。我一般都是实在看不出来问题在哪,需要逐步调试的时候,才将工程导入vs上调试一下,因为我比较习惯qtcreator的快捷键。当然,这只是个人观点。
下面就来介绍windows下使用vs编译并调试ffmpeg的方法。
一、编译环境搭建
1.VS开发工具安装
VS版本我用的是2013的,visual studio 2013大家自行百度下载安装。这里不提供地址了。
2.安装msys
这里编译ffmpeg不是直接将ffmpeg代码导入vs工程,因为这个太难了,不改代码估计做不到,我也没有去研究过。有过在visual studio下编程的小伙伴应该都知道vs的调试信息主要依靠于pdb文件,那么我们今天编译的目的就是使FFmpeg的动态库生成相应的pdb文件。
这里编译ffmpeg有点类似linux下编译,先是configure 然后 make make install。
因此我们需要安装一个msys (Minimal GNU(POSIX)system on Windows,是一个小型的GNU环境,包括基本的bash,make等等)。直接下载安装一个Mingw就可以了,里面带有msys,
下载地址:https://sourceforge.net/projects/mingw/
下载好MinGW之后可以直接双击打开,按照默认的方式安装(建议默认安装,安装目录为C:/MinGW),此期间可能要下载一些文件,不同人因为网络的不同可能安装的时长也不相同。安装好之后返回桌面,双击快捷方式,打开界面如下(我的插件都已经安装好了,所以有绿色的部分):
请在上面选项下右击,然后点Mark for Installation,全部选完之后点菜单栏的Installation->Apply Change,静静的等着下载吧。。。
安装好之后,如果上一步骤中MinGW安装的目录为C:/MinGW,则找到C:/MinGW/msys/1.0/msys.bat文件,右击编辑文件,在最前面加上一句话为(如果你下载的是我提供给你的MinGW,你一定要确认一下,路径是否正确):
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cvars32.bat"
这个路径为你自己的vs2013安装目录,如果是默认的安装目录你就按照上边的路径去找这个文件,每个人酌情而定,自己斟酌)
加好之后的效果如下:
二、编译ffmpeg
1.下载ffmpeg
我们使用的ffmpeg版本是2.5.6,其他版本应该也是类似
ffmpeg下载地址:http://ffmpeg.org/releases/ffmpeg-2.5.6.tar.gz
下载完成后将源码解压到E盘根目录,放在磁盘根目录是为了方便在命令行里面找到。
2.编译
打开C:/MinGW/msys/1.0下的msys.bat,这就是我们刚刚安装的msys,打开之后会弹出一个命令行窗口,里面的命令和linux下基本一致。
首先进入ffmpeg的源代码目录:
cd E:
cd ffmpeg-2.5.6
然后执行configure
./configure --enable-shared --enable-gpl --enable-version3 --toolchain=msvc --disable-yasm --prefix="E:ffmpeg"
这一步到这里会报如下错:
从提示上看是编译器检测失败了,莫方,继续看看config.log文件,可以看到是在链接的时候失败了。原因是在msys的目录下有一个Link.exe文件,这一步我们使用了这个文件,而不是使用vs的链接文件,解决方法很简单;
将C:/MinGW/msys.1.0/bin/link.exe随便改个名字,编译完后ffmpeg记得该回来就好了(防止哪天用到mingw的时候找不到link.exe)
现在继续configure,依次执行以下命令:
./configure --enable-shared --enable-gpl --enable-version3 --toolchain=msvc --disable-yasm --prefix="E:ffmpeg"
make
make install
三、调试代码
编译完成后便可在E盘根目录看到一个ffmpeg文件夹,里面有lib和dll文件,使用vs2013建立一个工程,调用简单的ffmpeg函数,vs引用Lib文件的方法请自行百度,这里不做阐述。
调试效果如下:
(图片是偷来的,我自己用的是2013的,因为懒不想截图了。
这里需要注意的是:请勿将ffmpeg的源代码删除,因为调试的时候需要用到他们。
本文参考地址:http://blog.csdn.net/u010380485/article/details/54092264