天天看点

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

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

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

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

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

2、修改ffmpeg.c

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

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

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

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

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

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

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

3、解决一些别的问题

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

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

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

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

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

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

这样就解决了下面的问题

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

100行的HAVE_STRUCT_POLLFD修改成POLLIN

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

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

然后看到下面的错误

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

其实是这个错:

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

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

AVRationalr= {1,AV_TIME_BASE };

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

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

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

遇到这个错误:

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

用以下语句替换:

char error_[1024];

av_make_error_string(error_,1024,ret);

error_

这个语句

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

用以下语句替换:

AVRationalr2= {1,1000 };

还需要改这里:

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

1874行还需要修改这里:

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

3226添加下面几行

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

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

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

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

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

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 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

这就是得到的a.gif:

vs2012调试ffmpeg.c 0、为什么要在vs中编译ffmpeg.c 1、先把ffmpeg.c加入在vs中 2、修改ffmpeg.c 3、解决一些别的问题 4、在继续添加需要的文件 4、其他的一些问题 5、测试使用一下生成出来的ffmpeg.exe 6、整个测试工程csdn下载

6、整个测试工程csdn下载

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

或许还需要到x264、x265的dll:http://download.csdn.net/detail/zengraoli/9461306

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