一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay
一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay
一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇
一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇
一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg
一步步实现windows版ijkplayer系列文章之五——使用automake一步步生成makefile
一步步实现windows版ijkplayer系列文章之六——SDL2源码分析之OpenGL ES在windows上的渲染过程
一步步实现windows版ijkplayer系列文章之七——终结篇(附源码)
一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay
最近想研究下ffplay的代码,学习代码是枯燥无味的,也是抽象的,学习一个系统或者软件之前,好的入门方法是先把系统搭建起来,或者把软件编译出来,直观的操作一下相关的功能,由表入里,熟悉功能之后,在慢慢深入代码,由现象看到本质,才能理解的更加深刻。
ffmpeg目前最新的代码是4.0.2.编译ffmpeg代码之前需要做一些准备工作。
安装编译环境
网上有两种windows下的gcc编译环境可供选择,一个是MinGW,另外一个是cygwin,二者的区别可以参考一个帖子。其中注意有一点是使用cygwin编译出来的程序都要依赖Cygwin1.dll,因此决定使用WinGW编译ffmpeg。
安装minGW installation manager
下载之后安装,打开主界面,安装下面的组件。
安装MinGW和MSYS
MSYS即Minimal GNU(POSIX)system on Windows,是一个小型的GNU环境,包括基本的bash,make等等。是Windows下最优秀的GNU环境,它也可以通过minGW installation manager进行安装。
打开minGW installation manager,按照下图进行勾选:

点击Installation->Apply Changes 进行安装基本包。
编译ffmpeg
编译ffmpeg是很简单的,但默认编译ffmpeg是不带ffplay的。需要做额外的操作。
yasm
yasm是汇编编译器,因为ffmpeg中为了提高效率用到了汇编指令,比如MMX和SSE。因此需要安装这个工具。下载链接
我编译的是32位的ffmpeg,所以下载“Win32.exe”。下载完成之后将yasm-1.3.0-win32.exe重命名为yasm.exe,放到C:\MinGW\msys\1.0\bin下面。
nasm
下载nasm,并将nasm.exe拷贝到C:\MinGW\msys\1.0\bin下面。
链接
pkg-config
pkg-config是一个辅助的配置、链接工具,可以方便的支持gcc自动配置。
下载链接,下载完之后将bin下面的pkg-config.exe拷贝到C:\MinGW\msys\1.0\bin下面。
SDL2
下载SDL2,解压之后,把目录下lib,bin.include,share下面的内容拷贝到C:\MinGW\msys\1.0的对应目录下,注意,是全部。
ffmpeg-4.0.2
把下载的ffmpeg源码包放到home目录下面,打开C:\MinGW\msys\1.0下的msys.bat,会自动在目录C:\MinGW\msys\1.0下生成一个home目录,进入ffmpeg源码根目录,创建build文件夹,进入文件夹,执行下面的命令:
$ ../configure --disable-static --enable-shared --enable-gpl --enable-version3 --enable-pthreads --enable-sdl
gdb debug用下面的命令:
$ ./configure --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl --enable-debug=3 --disable-optimizations --disable-mmx --disable-s tripping
成功之后,执行make
make
但是会报如下错误:
"ws2tcpip.h is not compatible with winsock.h. Include winsock2.h instead."
字面意思是某个文件包含了winsock.h,但是应该包含winsock2.h。找了半天,最后想到一个办法,把C:\MinGW\include下面的winsock.h删掉,再次执行make命令,最后发现是ptw32_errno.h这个文件包含了winsock.h,将其改为winsock2.h, 再次make,成功。
最后make install
make install
运行ffplay
ffplay.exe ed_1024_512.mp4

参考
https://www.cnblogs.com/tocy/p/windows_mingw_compile_ffmpeg_with_ffplay.html
一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay的更多相关文章
- 一步步实现windows版ijkplayer系列文章之七——终结篇(附源码)
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 一步步实现windows版ijkplayer系列文章之六——SDL2源码分析之OpenGL ES在windows上的渲染过程
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 一步步实现windows版ijkplayer系列文章之五——使用automake生成makefile
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- Windows Shell Extension 系列文章
Windows Shell Extension 系列文章 http://www.codeproject.com/Articles/512956/NET-Shell-Extensions-Shell-C ...
- Windows Azure Platform 系列文章目录
Windows Azure Platform (一) 云计算的出现 Windows Azure Platform (二) 云计算的分类和服务层次 Windows Azure Platform (三) ...
- 探索Windows命令行系列(7):通过命令编译C#类和Java类
1.编译 C# 类 1.1.C# 编译工具 1.2.编译一个 C# 类 1.3.编译多个 C# 类 2.编译 Java 类 2.1.Java 编译工具 2.2.编译 Java 类 3.组合命令符 4. ...
随机推荐
- RYU 灭龙战 fourth day (1)
RYU 灭龙战 fourth day (1) 前言 对于流量的监控,对于一个网络管理人员来说是非常重要的,可以从可视化的角度,方便检测出哪里的设备出了问题:而在传统网络中,如果是哪里的设备出了问题的话 ...
- sql server获取当前月的天数
方法1 SELECT 32-DAY(getdate()+32-DAY(getdate())) 方法2 CREATE FUNCTION dbo.fn_getMonthDayAll ---自定义函数名称 ...
- Docker(一)-Docker介绍
什么就Docker? Docker是一个开源项目, 诞生于2013年初,最初是dotCloud公司内部的一个业余项目.它基于Google公司推出的Go语言实现.项目后来加入了Linux基金会,遵从了A ...
- FuelPHP 系列(二) ------ route 路由
FuelPHP 中,默认可以通过 /controller_name/function_name 这种方式来访问,也可以通过自定义路由来访问. 路由配置在 /fuel/app/config/routes ...
- 第六周 可执行代码 以及 PSP 燃尽图 等等
转眼已经第六周了.这周主要内容有下:(CHECKLIST) 1.完成未完成的功能点. 2.PSP. 3.站立会议. 4.燃尽图. 5.各种图(折线,饼图). 6.checkList 具体任务如下: 1 ...
- Caffe搭建:Ubuntu14.04 + CUDA7.0 + opencv3.0 + Matlab2014A
从Hinton在science上发表深度学习训练开创新的文章以来,深度学习火了整整有3年多,而且随着新的硬件和算法的提出,深度学习正在应用于越来越多的领域,发挥其算法的优势. 实验室并没有赶上第一波深 ...
- BZOJ4628 BJOI2016IP地址(trie)
离线,每次修改相当于对该规则的所有匹配点的值+1,考虑在trie上打加法标记和匹配标记,匹配标记不下传,加法标记下传遇到匹配标记时清空.注意是用b时刻前缀-a时刻前缀,而不是(a-1)时刻前缀,具体我 ...
- 【USACO 1.4】Combination Lock
/* TASK:combo LANG:C++ URL:http://train.usaco.org/usacoprob2?a=E6RZnAhV9zn&S=combo SOLVE:自己做,想的是 ...
- 【bzoj3994】 SDOI2015—约数个数和
http://www.lydsy.com/JudgeOnline/problem.php?id=3994 (题目链接) 题意 多组询问,给出${n,m}$,求${\sum_{i=1}^n\sum_{j ...
- debian9部署jenkins
这里记录两种部署方式,一种是通过包管理工具直接安装,另一种是用tomcat作为web容器运行jenkins.个人倾向第一种,部署简单,而且维护起来方便很多. 用包管理工具aptitude部署jenki ...