`

vc2005编译ffmpeg以及ffplay

 
阅读更多

ffmpeg编译过程:
1 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

#if defined(WIN32) && !defined(__cplusplus)
#define inline __inline
#endif


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

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

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

 

 //#define HAVE_SYS_RESOURCE_H 1

 

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

 #define HAVE_WINSOCK2_H 1
 #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"

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

改成

#define AV_TIME_BASE_Q _AVRational(1, AV_TIME_BASE)



再加:

 

AVRational _AVRational(int num, int den) {
AVRational r = {num, den};
return r;
}

 

或者,在用到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里加:

#define AVCONV_DATADIR "c:/ffmpeg1010/"


#define snprintf _snprintf
#define lrint(f) (f>=0?(int32_t)(f+(double)0.5):(int32_t)(f-(double)0.4))
#define lrintf(f) (f>=0?(int32_t)(f+(float)0.5):(int32_t)(f-(float)0.4))
#define llrintf(f) (f>=0?(int64_t)(f+(double)0.5):(int64_t)(f-(double)0.4))
#define llrint(f) (f>=0?(int64_t)(f+(float)0.5):(int64_t)(f-(float)0.4))


#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

分享到:
评论

相关推荐

    ffmpeg/ffplay vc6 源码剖析

    了解如何在VC6环境下配置、编译和调试FFmpeg及ffplay源码,对于旧项目维护和教学具有价值。 通过详细阅读和分析这些源码,开发者不仅可以掌握多媒体处理的核心原理,还能提升C/C++编程技巧,特别是对底层系统调用和...

    ffmpeg vc2005编译

    ffmpeg的代码是2012-10-10,dll,lib等都是官方的,只是把fmpeg和ffplay用vc重编译了一下。 代码没问题,如果有编译错误,应该就是找不到什么文件,自行加上就好了。我本机装了vc6,vc2005和vc2010,DirectX9,2003 DDK...

    FFMPEG之ffplay VC工程

    4. 编译FFmpeg:执行`make`命令进行编译,`make install`将编译结果安装到指定路径。 在VC++ 6.0环境下编译FFplay,我们需要将FFmpeg的静态库(.lib文件)和头文件(.h文件)导入到项目中。FFplay工程包含的文件如...

    ffplay在vs2005编译通过工程

    总之,编译FFmpeg和ffplay在VS2005上是一项技术性的任务,需要对C/C++编程、Windows SDK以及FFmpeg和SDL的内部机制有一定的了解。通过这个过程,开发者不仅可以学习到音视频处理的基本原理,还可以深入理解编译工具...

    ffplay_vc2005

    用vc2005编译的ffplay。 没太大意义,顺手编着玩的,供有兴趣的人参考。 ffmpeg的代码是2012-10-10,dll,lib等都是官方的,只是把fmpeg和ffplay用vc重编译了一下。 ============================ 最新说明:直接下载...

    ffmpeg vc6下直接编译源码

    这个压缩包中的内容是为在古老的Visual C++ 6.0(简称VC6)环境下编译FFmpeg源码而准备的。虽然现代开发环境已经发展到VS2019、VS2022等更高版本,但有些开发者可能因为兼容性或习惯原因仍然使用VC6。这个资源的目的...

    ffmpeg的VS2005工程文件

    压缩包中的文件“ffmpeg.51.8_vc6”可能是一个特定版本的FFmpeg源代码,适应于Visual C++ 6.0或更高版本,尽管描述中提到了VS2005,但文件名可能表明这个版本也兼容较旧的编译器。这个文件可能包括了所有必要的源...

    FFplay播放器的Windows移植版,可以用VC打开

    FFplay原生不支持Visual C++(VC)进行编译,但通过移植工作,已经实现了在Windows环境下用VC编译FFplay的功能。 移植过程中,开发者通常会遇到若干问题,包括但不限于: 1. **依赖库的兼容性**:FFmpeg在Linux或...

    windows下编译FFmpeg环境安装.docx

    虽然这个过程比较繁琐,但是一旦搭建完成,就可以在 Windows 系统上自由地编译 FFmpeg 以及其他相关库,极大地提高了开发效率。此外,对于开发者来说,理解整个编译过程也有助于更好地调试和优化软件性能。

    ffplayformfc-code.zip_ffmpeg_ffmpeg MFC_ffmpeg vc_ffmpeg播放器mfc_f

    在这个名为 "ffplayformfc-code.zip_ffmpeg_ffmpeg MFC_ffmpeg vc_ffmpeg播放器mfc_f" 的压缩包中,开发者已经将 FFmpeg 的原生命令行播放器 `ffplay` 移植到了 Microsoft Visual C++ (VC++) 的环境中,并结合了 MFC...

    FFMPEG编译手册

    * 编译FFMPEG 5. FFMPEG应用场景 FFMPEG主要应用于流媒体通讯领域,用于协商媒体格式和最优媒体编码解码器的情况。 FFMPEG是一款功能强大的多媒体处理工具,具有广泛的应用前景。通过了解FFMPEG的编译过程和依赖...

    ffmpeg vc project

    主要编译的源文件有ffserver.c、ffmpeg.c、ffplay.c、cmdutils.c等,这些是FFmpeg的主要组件和示例程序。例如,ffplay.c是一个简单的播放器示例,cmdutils.c则包含了命令行处理工具。 4. **依赖库管理**:FFmpeg在...

    ffmpeg-0.8库(mingw编译,已经整合成1个dll了)

    `--enable-ffplay`选项意味着FFmpeg播放器ffplay也被编译进去了,这是一个简单的媒体播放器,用于测试解码和渲染效果。`--enable-memalign-hack`选项则是一个优化,它使得内存分配更加对齐,可能会提高某些处理器上...

    ffplay精简版VC6.0平台c源码

    "ffplay精简版VC6.0平台c源码"是一个基于FFmpeg的简单播放器项目,特别针对Visual C++ 6.0这个古老的开发环境进行了优化和简化。 ffplay 是 FFmpeg 项目中的一个小型命令行播放器,它用C语言编写,展示了如何直接...

    ffmpeg-0.6-VC SDK

    在FFmpeg的SDK中,这里可能包含FFmpeg命令行工具(如ffmpeg.exe、ffplay.exe等)以及编译好的动态库文件(.dll),这些文件在运行时会被应用程序调用以执行音视频处理任务。 2. **include** 文件夹:这个文件夹存放...

    ffplay vs2008代码移植

    FFmpeg 是一个强大的开源多媒体处理框架,包含了众多的组件,其中 FFplay 是一个简单...如果你在移植过程中遇到困难,可以参考提供的压缩包文件 "ffplay_vc",其中可能包含了完成移植所需的配置文件和修改后的源代码。

    FFMPEG入门

    这是因为FFMPEG对GCC有较强的依赖性,而使用Visual C++编译FFMPEG会遇到不少挑战。因此,推荐使用GCC进行编译,这样可以提高效率并减少错误。 对于那些想要快速上手的用户,可以跳过编译步骤,直接利用网络上提供的...

    FFmpeg_13_音频解码

    这个项目包含了各种工具,如 ffmpeg、ffplay、ffprobe 和 ffserver,以及一系列库,如 libavcodec(编码库)、libavformat(格式库)、libavfilter(滤镜库)和 libavutil(通用工具库)。本项目是针对FFmpeg的音频...

    ffmpeg 0.11.1 VS2010 on windows

    FFmpeg 是一个开源的多媒体处理框架,广泛应用于音视频编码、解码、转换以及流媒体处理。这个资源包“ffmpeg 0.11.1 VS2010 on windows”显然是针对Windows平台上的开发者,提供了FFmpeg 0.11.1版本与Visual Studio ...

    FFmpeg_11_视频流自定义分辨率播放

    FFmpeg 包含了 ffmpeg、ffplay、ffprobe 和 ffserver 四个主要工具,以及一系列的库,如 libavcodec(编解码器库)、libavformat(容器格式库)和 libavfilter(滤镜库)。在这个项目中,我们主要关注 libavformat ...

Global site tag (gtag.js) - Google Analytics