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

[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. #define snprintf _snprintf
  3. #define lrint(f) (f>=0?(int32_t)(f+(double)0.5):(int32_t)(f-(double)0.4))
  4. #define lrintf(f) (f>=0?(int32_t)(f+(float)0.5):(int32_t)(f-(float)0.4))
  5. #define llrintf(f) (f>=0?(int64_t)(f+(double)0.5):(int64_t)(f-(double)0.4))
  6. #define llrint(f) (f>=0?(int64_t)(f+(float)0.5):(int64_t)(f-(float)0.4))
  7. #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

vc2005编译ffmpeg以及ffplay相关推荐

  1. 2019编译ffepeg vs_如何在windows10下使用vs2017编译最新版本的FFmpeg和ffplay

    该文章描述了如何在windows10 64位系统下面编译出FFmpeg的库及其自带的ffplay播放器,而且全部采用最新的版本,这样我们可以在vs2017的ide下调试ffplay,能使我们更容易学习 ...

  2. 一步步实现windows版ijkplayer系列文章之一Windows10平台编译ffmpeg 4.0.2,生成ffplay

    一步步实现windows版ijkplayer系列文章之一Windows10平台编译ffmpeg 4.0.2,生成ffplay 最近想研究下ffplay的代码,学习代码是枯燥无味的,也是抽象的,学习一个 ...

  3. ffplay android 编译,ffmpeg android 平台编译

    ? ? ?ffmpeg 在移动平台上应用十分广泛,其在音视频编解码,封装多媒体文件格式,rtsp http rtmp协议相关的音视频推流拉流具有强大的可用性.这里将自己平时为Android平台编译ff ...

  4. Windows系统使用minGW+msys 编译ffmpeg 0.5的全过程详述

    一.环境配置 1.下载并安装 MinGW-5.1.4.exe (http://jaist.dl.sourceforge.net/sourcef - -5.1.4.exe),安装时选中 g++, min ...

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

    本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处.     FFmpeg是在Linux平台下开发的, ...

  6. Ubuntu14.04安装编译ffmpeg

    因为要用到improved dense trajectory特征,用源码需要编译ffmpeg和OpenCV,网址给出的源码需要的OpenCV-2.4.2 和ffmpeg-0.11.1都比较老,我用的是 ...

  7. 流媒体技术学习笔记之(十八)Ubuntu 16.04.3 如何编译 FFmpeg 记录

    官方文档:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu 一.最简单安装: apt-get install ffmpeg 二.安装最新版本 大 ...

  8. 【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )

    FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 ...

  9. 在Windows下编译FFmpeg详细说明

    在Windows下编译FFmpeg详细说明 MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 Mi ...

最新文章

  1. 用户数年增长 300%,BitMax如何把握数字资产时代机遇?
  2. 最流行的解压缩软件--winrar
  3. python读取大文件-使用Python读取大文件的方法
  4. 永不休眠怎么设置_电脑休眠后应该怎样唤醒?
  5. ubuntu安装eclipse java环境变量配置_【Linux学习】Ubuntu下安装JDK以及配置环境,和eclipse的下载...
  6. 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别...
  7. 选课中应用Redis一些思考
  8. 图论;单源最短路径;拓扑排序+松弛(有向无回路);Bellman-Ford(回路,负权回路)Dijkstra(无负权,可回路);可以用最小堆实现算法的优化;
  9. 三角形外接球万能公式_宏程序不是万能的,没有宏程序是不能的,一款通用宏分享给大家!...
  10. DataGridView拖动换行
  11. 打印纸张尺寸换算_纸张开本和尺寸对照表!
  12. 服务监控(一)之安装Prometheus
  13. 教你用Excel做高级甘特图
  14. 如何用Android Stuido 调用百度翻译的API
  15. 拼写纠错原理以及模型(Spelling Correction model)
  16. 工具:dlf 强制删除文件或文件夹
  17. 监控工具Zabbix之原理及部署
  18. C# chart画折线
  19. 三国志战略版新赛季:先锋斥候北定中原
  20. 基于ETest的发动机ECU硬件在环测试平台的研究与开发

热门文章

  1. RR隔离级别下通过next-key locks 避免幻影读
  2. Oracle PL/SQL Developer集成TFS进行团队脚本文件版本管理
  3. Atitit. 订单管理 收银单持久化 功能设计  基于ecshop订单结构
  4. [Head First设计模式]山西面馆中的设计模式——观察者模式
  5. 充电电池和充电时间说明
  6. python最简单单例模式_Python单例模式的4种实现方法 | 学步园
  7. 计算机网络基础 — 网络设备 — 路由器(Router)
  8. Linux Kernel TCP/IP Stack — L2 Layer — Traffic Control(流量控制)的实现原理
  9. 云计算技术 — Kubernetes v.s. OpenShift
  10. Go 语言编程 — gormigrate GORM 的数据库迁移助手