vc2005编译ffmpeg以及ffplay

ffmpeg编译过程:
http://ffmpeg.zeranoe.com/builds/ 
下载官方提供的源码,win32库和dll。
2 新建vc2005 console空工程,把ffmpeg.h,ffmpeg.c,cmdutils.c,cmdutils.h,cmdutils_common_opts.h,
ffmpeg_filter.c,ffmpeg_opt.c加到工程。
3 http://drv.nu/ffmpeg/doxygen/config_8h-source.html
从这里生成 config.h
4 从mingw下复制stdint.h和inttypes.h

5 把.h里的inline换成__inline

[cpp] view plaincopy

 

  1. #if defined(WIN32) && !defined(__cplusplus)  
  2. #define inline __inline  
  3. #endif  


project->[setting]->[c/c++]->Preprocessor definitions:编辑框里输入inline=__inline

6 找不到colorspace.h等一些文件,从源码里找到复制过来。

7 有几个系统文件找不到,注释掉config.h相关定义,如

 

[cpp] view plaincopy

 

  1. //#define HAVE_SYS_RESOURCE_H 1  

 

  另外,需要用到socket,修改:

[cpp] view plaincopy

 

  1. #define HAVE_WINSOCK2_H 1  
  2. #define HAVE_STRUCT_ADDRINFO 1  

7 print_all_libs_info 里找不到什么东西,就注释掉。

8参考 http://www.cnblogs.com/zyl910/archive/2012/08/08/c99int.html
在config.h里面加上
#define PRIu64       "I64u"
#define PRId64       "I64d"


//#define AV_TIME_BASE_Q          (AVRational){1, AV_TIME_BASE}

改成

 #define AV_TIME_BASE_Q          _AVRational(1, AV_TIME_BASE)

再加:

 

[cpp] view plaincopy

 

  1. AVRational _AVRational(int num, int den) {  
  2. AVRational r = {num, den};  
  3. return r;  
  4. }  

 

或者,在用到AV_TIME_BASE_Q 的地方,手写AVRational r = {1,AV_TIME_BASE };,再用上这个r.

最麻烦就是const OptionDef options[] 这个数组的初值处理,主要是里面的函数,参考ffmpeg_vc5的代码,把每一行改成这样:{ "f",  HAS_ARG | OPT_STRING | OPT_OFFSET,   { (void*)OFFSET(format) },
就是把原来函数的地方{.fun = xxx}改成 {(void*)xxx}。编译通过了,常规的一些输入参数都好用。复杂的还没试。

最后会提示几个链接问题,手动加上const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB];
然后,在config.h里加:

[cpp] view plaincopy

 

  1. #define AVCONV_DATADIR "c:/ffmpeg1010/"  
  2.   
  3.   
  4. #define snprintf _snprintf  
  5. #define lrint(f) (f>=0?(int32_t)(f+(double)0.5):(int32_t)(f-(double)0.4))  
  6. #define lrintf(f) (f>=0?(int32_t)(f+(float)0.5):(int32_t)(f-(float)0.4))  
  7. #define llrintf(f) (f>=0?(int64_t)(f+(double)0.5):(int64_t)(f-(double)0.4))  
  8. #define llrint(f) (f>=0?(int64_t)(f+(float)0.5):(int64_t)(f-(float)0.4))  
  9.   
  10.   
  11. #define log2(x) (log(x) * 1.44269504088896340736)    

这个AVCONV_DATADIR 是随便写的,暂时还没用上。

到此,基本就完全成功了。编译出来,运行ffmpeg -i rtsp://xxx/test.264 out.mp4
保存的质量非常好。

 

ffplay编译过程

ffplay编译比ffmpeg简单的多,新建工程,加上代码,稍改几行就OK了。然后ffplay rtsp,出了一个黑窗口,播放效果不错。再新生成一个mfc工程,给sdl指定一个窗口,视频就在指定窗口播放了。不过这时有个问题,拖动窗口时,视频就花掉了。估计sdl需要一些参数,以后有空再研究了。

源码下载:http://download.csdn.net/detail/sxcong/4672795

 

原文地址:http://blog.csdn.net/sxcong/article/details/8097594

时间: 2025-01-29 19:36:32

vc2005编译ffmpeg以及ffplay的相关文章

linux下FFmpeg编译生成ffplay

1.确认Makefile中指定的config.mak(在ffmpeg根目录下)中:CONFIG_FFPLAY=yes,如果不是需要重新./configure 该处还有ffmpeg.ffprobe.ffserver可以打开. 2.编译时需要安装libsdl1.2-dev,命令为sudo apt-get install libsdl1.2-dev,如果安装失败,之前如果安装过sdl-devel包最好将其卸载.根据错误原因来解决. -----------------------------------

windows 7下mingw+msys编译ffmpeg

  windows 7下mingw+msys编译ffmpeg   1-->下载安装MingW,mingw-get-inst-20120426.exe  http://sourceforge.net/projects/mingw/ 安装路径 默认C:\MinGW .勾选了 <1> C Compiler  <2> C++ Compiler <3>MSYS Basic System <4>MinGW Developer ToolKit 其中 <3>

开源项目:windows下使用MinGW+msys编译ffmpeg

本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处.    FFmpeg是在Linux平台下开发的,但它同样可以在其它操作系统环境中编译运行,本文介绍的就是在windows下编译FFmpeg.一 编译准备    您最好新建一个目录专门用来保存以下下载的文件.1 下载 MinGW 和 MSYS    MinGW(Minimalist GNU on Windows):一个可自由使用和自由发布的Windo

windows 下使用 MinGW + msys 编译 ffmpeg

本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处.    FFmpeg是在Linux平台下开发的,但它同样可以在其它操作系统环境中编译运行,本文介绍的就是在windows下编译FFmpeg.一 编译准备    您最好新建一个目录专门用来保存以下下载的文件.1 下载 MinGW 和 MSYS    MinGW(Minimalist GNU on Windows):一个可自由使用和自由发布的Windo

在Windows下编译ffmpeg完全手册

本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注: 1.       对于compile和build这两个词,本文统一的使用编译这个词,根据上下文读者应能区分语义上的差别.   本文的目的是提供一切与FFmpeg在Windows下的相关帮助.它最初是一个针对用MSys+MinGW系统编译的手把手的教程,现在也增加了如何在你的项目中链接FFmpeg

在Ubuntu下编译FFMPEG

在之前,我们成功地使用mingw+msys在windows平台下编译FFMpeg,并生成了ffplay.exe.现在再在Ubuntu平台上重新编译一次.相对于在windows平台上编译需要的旷日持久而且异常艰难的工作,Ubuntu上编译ffmpeg可谓是非常轻松简单的,几条简单的命令就可以轻松完成. 首先,需要在Ubuntu界面上调处命令行界面,最方便的方式是使用快捷键Ctrl+Alt+T. 第二部是安装SDL.SDL是一个开源的多媒体开发库,可以设置图像和视频的绘制等操作.如果不安装SDL,F

在Windows下编译FFmpeg详细说明

MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时   MinGW,即 Minimalist GNU For Windows.它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC产生 Windows32 程序.   开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人提供一套符合 GNU 的 GNU 工作环境

使用VC2005编译出现这个错误

Include\unknwn.idl(108) : error MIDL2025 : syntax error : expecting ] or , near "annotation" Include\unknwn.idl(108) : error MIDL2026 : cannot recover from earlier syntax errors; aborting compilation 如果使用VC2005编译出现这个错误,是由于使用了新版本的VISTA SDK头文件,而使用

linux-在ubuntu下用ndk编译ffmpeg的问题

问题描述 在ubuntu下用ndk编译ffmpeg的问题 在ubuntu下用ndk编译ffmpeg的时候出现了这个错误: 这个是我的sh文件: make clean export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt export PLATFORM=$NDK/platforms/android-8/arch-arm export PREFIX=../ff-pure-onelib build_one(){ ./con