文档章节

vc2005编译ffmpeg以及ffplay

雷霄骅
 雷霄骅
发布于 2014/08/16 13:48
字数 606
阅读 81
收藏 1

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"


//#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

本文转载自:http://blog.csdn.net/leixiaohua1020/article/details/12029697

雷霄骅

雷霄骅

粉丝 213
博文 419
码字总数 2129
作品 4
朝阳
程序员
私信 提问
加载中

评论(0)

linux 下安装ffmpeg

1、下载ffmpeg。 2、解压   tar xvfj ffmpeg-0.11.1.tar.bz2   得到解压后的目录是ffmpeg-0.11.1 3、配置   ./configure --enable-shared --prefix=/usr/local/ffmpeg   其中:--ena...

一一无念
2012/10/31
361
0
Mac终端FFmpeg手动,自动编译

背景 移动端学习音视频开发,FFmpeg可以说是必学的框架,FFmpeg在linux平台下开发,但它同样也可以在其他操作系统环境中编译运行,包括Windows、Mac OS X等。FFmpeg是一套可以用来记录、转换数...

小东邪啊
2019/05/30
0
0
ubuntu下面编译ffmpeg

ubuntu下编译ffmpeg,同事用ffplay播放视频文件 2011-02-21 14:14

viwii
2012/04/26
537
0
支持硬件编解码器的ffmpeg-SDK,欢迎下载

针对ffmpeg在android手机平台视频处理慢的情况: 我们直接在ffmpeg的底层增加和,极大的加速了ffmpeg的解码和编码能力. 您可以像指定一个编码器,解码器一样,使用硬件编解码: 完全兼容完整的ffm...

daiLIXING
2016/03/10
3.7K
5
关于ffmpeg和MP4,求救啊

各位大侠,小弟求救啊,这个问题我搞了10多天了,还是没有解决, 哪位大侠帮助看下,衷心感谢: 我现在需要用ffmpeg来播放.mp4视频(从海康网络摄像头抓取的, 用迅雷看看可以播放,主要是为...

铂金小鬼
2010/09/27
9.2K
3

没有更多内容

加载失败,请刷新页面

加载更多

Kali Linux发布2020.1a版本

Kali Linux发布2020.1a版本 Kali Linux发布2020.1a版本。现在该版本暂时只能从cdimage.kali.org下载。该版本修复了2010.1不联网安装时,没有桌面的bug。2010.1默认的桌面为Xfce。该桌面对应的...

大学霸
16分钟前
46
0
Elasticsearch+Fluentd+Kafka搭建日志系统

前言 由于logstash内存占用较大,灵活性相对没那么好,ELK正在被EFK逐步替代.其中本文所讲的EFK是Elasticsearch+Fluentd+Kfka,实际上K应该是Kibana用于日志的展示,这一块不做演示,本文只讲述数...

四颗咖啡豆
41分钟前
57
0
结果.

app/admin/options.py

MtrS
今天
42
0
00-Java 面试准备

面试之前 面试前准备简历需要注意的几个方面: 写简历、改简历,这个一定要干的。简历有两个作用,一个是吸引别人,能让别人邀请你去面试,这是前提;另一个是引导面试的人,让面试的人问你所...

源程序
今天
54
0
OSChina 周二乱弹 —— 大王(@罗马的王)颜值制霸Osc社区

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @巴拉迪维 :Lunik的单曲《Seeing You Soar》 I hope you’re smiling,When seeing me soar. #今日歌曲推荐# 《Seeing You Soar》- Lunik 手...

小小编辑
今天
1.6K
5

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部