vs2012调试ffmpeg.c

0、为什么要在vs中编译ffmpeg.c

用ffmpeg有很多的用途,比如可以用来转码,也可以用来解码,光是通过上一章的博文,得到几个对应的dll,其实作用并不大,你可以通过在vs中编译ffmpeg.c来看看,是如何使用这些dll的,当然,也可以通过编译ffplay.c来看看一个播放器是如何做成的



1、先把ffmpeg.c加入在vs中

创建一个空的工程,然后把ffmpeg.c加进来,尝试一下编译,看看都需要加入些什么


2、修改ffmpeg.c

vs2012调试ffmpeg.c_第1张图片

注释掉40行,然后把对应的头文件拷过来

 

因为我是通过mingw来编译的,所以在当时生成出来dll的时候,也顺便把头文件给拷贝出来了,所以这里可以直接放到vs的这个工程中:

vs2012调试ffmpeg.c_第2张图片


然后在工程设置中,给他包含进来

 

还缺少的头文件,可以去ffmpeg的源代码里面搜索:

vs2012调试ffmpeg.c_第3张图片




3、解决一些别的问题

这里的34行注释掉,类似的后面遇到#include 的也都注释掉

vs2012调试ffmpeg.c_第4张图片

提示“error C2054: 在“inline”之后应输入“(””这个错误的,全都去掉incline即可

vs2012调试ffmpeg.c_第5张图片

在刚才加入的config.h文件的最前面加入:

vs2012调试ffmpeg.c_第6张图片

这样就解决了下面的问题



100行的HAVE_STRUCT_POLLFD修改成POLLIN

vs2012调试ffmpeg.c_第7张图片




4、在继续添加需要的文件

然后看到下面的错误

vs2012调试ffmpeg.c_第8张图片

其实是这个错:

vs2012调试ffmpeg.c_第9张图片

把所有用到这个宏的地方都修改成:

AVRationalr= {1, AV_TIME_BASE };

用r这个变量来替代这个宏

 

使用_read,凡是提示这样的错误,都是这么解决

vs2012调试ffmpeg.c_第10张图片

遇到这个错误:

vs2012调试ffmpeg.c_第11张图片

用以下语句替换:

char error_[1024];

av_make_error_string(error_,1024,ret);

error_

 

这个语句


用以下语句替换:

AVRationalr2= {1,1000 };


还需要改这里:

vs2012调试ffmpeg.c_第12张图片

1874行还需要修改这里:

vs2012调试ffmpeg.c_第13张图片

3226添加下面几行

vs2012调试ffmpeg.c_第14张图片

第一个if(debug_ts){}应该这么样修改:

vs2012调试ffmpeg.c_第15张图片

最后一个if(debug_ts){}应该这么样修改:

vs2012调试ffmpeg.c_第16张图片


4、其他的一些问题

比如snprintf修改成_snprintf、read修改成_read等,这些都容易解决


5、测试使用一下生成出来的ffmpeg.exe

在工程目录中放一个测试视频文件video.mp4,设置调试的命令行为-i video.mp4 -vframes 300 -y -f gif a.gif

这个命令行的意思是,把video.mp4的前300帧做成一个a.gif(一些另外的使用命令,可以参考ffmpeg官网或者google、baidu)

vs2012调试ffmpeg.c_第17张图片


这就是得到的a.gif:



6、整个测试工程csdn下载

csnd的下载地址:http://download.csdn.net/detail/zengraoli/7610219

改动比较多,花了大概一个晚上解决的问题,所以收取的下载分比较高,请尽量自己动手修改!

你可能感兴趣的:(测试,vs,vs2012,ffmpeg调试,ffmpeg2)