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
vc2005编译ffmpeg以及ffplay相关推荐
- 2019编译ffepeg vs_如何在windows10下使用vs2017编译最新版本的FFmpeg和ffplay
该文章描述了如何在windows10 64位系统下面编译出FFmpeg的库及其自带的ffplay播放器,而且全部采用最新的版本,这样我们可以在vs2017的ide下调试ffplay,能使我们更容易学习 ...
- 一步步实现windows版ijkplayer系列文章之一Windows10平台编译ffmpeg 4.0.2,生成ffplay
一步步实现windows版ijkplayer系列文章之一Windows10平台编译ffmpeg 4.0.2,生成ffplay 最近想研究下ffplay的代码,学习代码是枯燥无味的,也是抽象的,学习一个 ...
- ffplay android 编译,ffmpeg android 平台编译
? ? ?ffmpeg 在移动平台上应用十分广泛,其在音视频编解码,封装多媒体文件格式,rtsp http rtmp协议相关的音视频推流拉流具有强大的可用性.这里将自己平时为Android平台编译ff ...
- Windows系统使用minGW+msys 编译ffmpeg 0.5的全过程详述
一.环境配置 1.下载并安装 MinGW-5.1.4.exe (http://jaist.dl.sourceforge.net/sourcef - -5.1.4.exe),安装时选中 g++, min ...
- 开源项目:windows下使用MinGW+msys编译ffmpeg
本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处. FFmpeg是在Linux平台下开发的, ...
- Ubuntu14.04安装编译ffmpeg
因为要用到improved dense trajectory特征,用源码需要编译ffmpeg和OpenCV,网址给出的源码需要的OpenCV-2.4.2 和ffmpeg-0.11.1都比较老,我用的是 ...
- 流媒体技术学习笔记之(十八)Ubuntu 16.04.3 如何编译 FFmpeg 记录
官方文档:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu 一.最简单安装: apt-get install ffmpeg 二.安装最新版本 大 ...
- 【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )
FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 ...
- 在Windows下编译FFmpeg详细说明
在Windows下编译FFmpeg详细说明 MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 Mi ...
最新文章
- 用户数年增长 300%,BitMax如何把握数字资产时代机遇?
- 最流行的解压缩软件--winrar
- python读取大文件-使用Python读取大文件的方法
- 永不休眠怎么设置_电脑休眠后应该怎样唤醒?
- ubuntu安装eclipse java环境变量配置_【Linux学习】Ubuntu下安装JDK以及配置环境,和eclipse的下载...
- 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别...
- 选课中应用Redis一些思考
- 图论;单源最短路径;拓扑排序+松弛(有向无回路);Bellman-Ford(回路,负权回路)Dijkstra(无负权,可回路);可以用最小堆实现算法的优化;
- 三角形外接球万能公式_宏程序不是万能的,没有宏程序是不能的,一款通用宏分享给大家!...
- DataGridView拖动换行
- 打印纸张尺寸换算_纸张开本和尺寸对照表!
- 服务监控(一)之安装Prometheus
- 教你用Excel做高级甘特图
- 如何用Android Stuido 调用百度翻译的API
- 拼写纠错原理以及模型(Spelling Correction model)
- 工具:dlf 强制删除文件或文件夹
- 监控工具Zabbix之原理及部署
- C# chart画折线
- 三国志战略版新赛季:先锋斥候北定中原
- 基于ETest的发动机ECU硬件在环测试平台的研究与开发
热门文章
- RR隔离级别下通过next-key locks 避免幻影读
- Oracle PL/SQL Developer集成TFS进行团队脚本文件版本管理
- Atitit. 订单管理 收银单持久化 功能设计 基于ecshop订单结构
- [Head First设计模式]山西面馆中的设计模式——观察者模式
- 充电电池和充电时间说明
- python最简单单例模式_Python单例模式的4种实现方法 | 学步园
- 计算机网络基础 — 网络设备 — 路由器(Router)
- Linux Kernel TCP/IP Stack — L2 Layer — Traffic Control(流量控制)的实现原理
- 云计算技术 — Kubernetes v.s. OpenShift
- Go 语言编程 — gormigrate GORM 的数据库迁移助手