众所周知,ffmpeg在linux平台下编译调试是很方便的,但大部分人工作学习平台都是windows,为了更方便的学习ffmpeg,有必要摸索一套windows下调试ffmpeg的方法。这里分享一下windows下成功编译调试ffmpeg的经验。
一、准备工作
1、选择codelite作为windows下调试ffmpeg的ide,因为windows版的codelite安装包自带了mingw,安装完之后,整套gcc/gdb环境都可以在codelite中直接调用起来,省掉许多配置环节(codelite下载链接)。默认路径安装,会在C盘生成文件夹“C:\MinGW-4.8.1”。
2、选择MSYS作为windows下的shell环境(MSYS下载链接),MSYS安装到路径“C:\MSYS”。
3、注意,接下来将C:\MinGW-4.8.1\下的文件全部拷贝到 C:\MSYS\mingw32文件夹下,这是为了使得MSYS中的gcc/gdb的库与codelite中保持一致。
4、安装pkg-config、gettext等补充库:这个是比较重要的步骤,因为MSYS并没有包含ffmepg编译需要的所有的库,所以需要额外下载补充(下载地址),三个包分别为"gettext_0.18.2.1-1_win32.zip","glib_2.34.3-1_win32.zip"和“pkg-config_0.28-1_win32.zip”。将zip包解压,然后把其中bin文件夹下的文件拷贝到C:\MSYS\bin\下就可以了。
5、安装SDL:MSYS不带SDL库,而ffmpeg的播放器ffplay使用SDL进行音视频的渲染,所以为了编译ffplay,需额外安装SDL(SDL下载链接)。SDL安装步骤为:将SDL包解压到D盘,打开shell环境(C:\MSYS\msys.bat),cd 到SDL文件夹(D:\SDL-1.2.15),修改Makefile中的CROSS_PATH变量为CROSS_PATH := /mingw,最后shell中运行make cross命令(make cross命令执行的是make install-sdl prefix=/mingw),就可以将SDL安装到mingw下。
二、开始编译
1、configure: 启动shell,cd ffmpeg源码路径。如果需要用codelite调试ffmpeg,需要在configure阶段打开debug相关选项,具体命令为“./configure --enable-debug=3--disable-optimizations --disable-stripping”。可以关注一下configure的输出log,如果有一条记录SDL_support = yes,则说明SDL库可以找到,ffplay可以正常编译。
2、make: make -j4,启动4个线程同时编译。
三、调试运行
1、编译出来的ffplay,ffmpeg等程序,在cmd下运行会提示找不到SDL.dll,这是因为SDL.dll没有在cmd的搜索路径中,解决方法:将SDL\bin目录下的SDL.dll拷贝到ffmpeg.exe, ffplay.exe,ffprobe.exe所在目录即可。
2、使用codelite可以调试ffplay_g.exe, ffmpeg_g.exe和ffprobe_g.exe,这样可以在windows平台很方便的调试ffmpeg啦。
下图为配置 codelite 调试命令。
下图为调试界面