首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

ffmpeg入门——文档零

2012-12-31 
ffmpeg入门——文档0ffmpeg入门学习,同时利用ffmpeg和sdl制作一个简单的视频播放器环境:window7vs2008(2012.

ffmpeg入门——文档0
ffmpeg入门学习,同时利用ffmpeg和sdl制作一个简单的视频播放器
环境:window7+vs2008(2012.12.13)
1、一个文档对应一个压缩包,每个压缩包解压后都是可以直接编译运行的,ffmpeg和sdl的库文件等都是已经编译的2、原始程序来源于网上很火的《如何基于FFMPEG和SDL写一个少于1000行代码的视频播放器》,而且是在linux下的编译运行,但是随着ffmpeg版本的更新,程序做了修改,现在的程序是可以在window下编译运行的3、现程序中ffmpeg使用的是FFMPEG FULL SDK V3.2,随着版本的更新,后期如果有些函数有变化的话,需要修改程序4、测试视频和方法在第一个压缩包中5、所有的压缩包文件都已经上传,下载地址:http://download.csdn.net/detail/qq819853294/4888713                                                                                  http://download.csdn.net/detail/qq819853294/4888723
在windows下编译程序时出现的一些问题:
1、url_ferror 和 url_set_interrupt_cb 的错误if(url_ferror(&pFormat->pb)==0)替换成:if(pFormat->pb&&pFormat->pb->error).
2、至于url_set_interrupt_cb,我自己是将它替换成了static const AVIOInterruptCB int_cb={ decode_interrupt_cb, NULL};pFormatCtx->interrupt_callback=int_cb;
3、提示找不到pstrcpy,新版本的ffmpeg使用av_strlcpy替代了pstrcpy,同时它的第二个和第三个参数位置要换一下,av_strlcpy在avstring.h中,所以在头加上#include <libavutil/avstring.h>
4、找不到rint 加上:int rint(int x){return (int)(x + (x < 0 ? -0.5 : 0.5));}
5、error LNK2019: unresolved external symbol _img_convert referenced in function "int __cdecl queue_picture(struct VideoState *,struct AVFrame *,double)" (?queue_picture@@YAHPAUVideoState@@PAUAVFrame@@N@Z)
6、编译tutorial07的时候在av_rescale_q函数处出现错误VC不支持这种定义方式:#define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE},在头文件中找到这一行注释掉,增加下面的:static AVRational g_avr_param = {1, AV_TIME_BASE};#define AV_TIME_BASE_Q g_avr_param
7、链接时出现error LNK2001要注意(库文件以及环境变量都设置好了的):使用在C++中调用C语言编写的动态链接库时,要在与DLL相应的头文件中添加extern “C”extern "C"{#include <libavcodec/avcodec.h>#include <libavformat/avformat.h>#include <libswscale/swscale.h>#include <libavutil/avstring.h>};

热点排行