一步步实现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系列文章之七——终结篇(附源码)html

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

最近想研究下ffplay的代码,学习代码是枯燥无味的,也是抽象的,学习一个系统或者软件以前,好的入门方法是先把系统搭建起来,或者把软件编译出来,直观的操做一下相关的功能,由表入里,熟悉功能以后,在慢慢深刻代码,由现象看到本质,才能理解的更加深入。windows

ffmpeg目前最新的代码是4.0.2.编译ffmpeg代码以前须要作一些准备工做。bash

安装编译环境

网上有两种windows下的gcc编译环境可供选择,一个是MinGW,另一个是cygwin,两者的区别能够参考一个帖子。其中注意有一点是使用cygwin编译出来的程序都要依赖Cygwin1.dll,所以决定使用WinGW编译ffmpeg。tcp

安装minGW installation manager

下载连接工具

下载以后安装,打开主界面,安装下面的组件。源码分析

安装MinGWMSYS

MSYS即Minimal GNU(POSIX)system on Windows,是一个小型的GNU环境,包括基本的bash,make等等。是Windows下最优秀的GNU环境,它也能够经过minGW installation manager进行安装。post

打开minGW installation manager,按照下图进行勾选:学习


点击Installation->Apply Changes 进行安装基本包。ui

编译ffmpeg

编译ffmpeg是很简单的,但默认编译ffmpeg是不带ffplay的。须要作额外的操做。.net

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

相关文章
相关标签/搜索