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

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

一步步实现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

下面的包都需要安装(有可能遗漏,编译ffmpeg时缺什么可以回来安装):

  • gcc-dev
  • gcc-bin
  • binutils-bin
  • libpthreadgc-dev
  • auto-make

MinGW的安装目录为C:MinGW

继续安装MSYS

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

MSYS的默认安装目录为C:MinGWmsys.

编译ffmpeg

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

yasm

yasm是汇编编译器,因为ffmpeg中为了提高效率用到了汇编指令,比如MMX和SSE。因此需要安装这个工具。下载链接

我编译的是32位的ffmpeg,所以下载“Win32.exe”。下载完成之后将yasm-1.3.0-win32.exe重命名为yasm.exe,放到C:MinGWmsys1.0bin下面。

pkg-config

pkg-config是一个辅助的配置、链接工具,可以方便的支持gcc自动配置。

下载链接,下载完之后将bin下面的pkg-config.exe拷贝到C:MinGWmsys1.0bin下面。

SDL2

下载SDL2,解压之后,把目录下lib,bin.include,share下面的内容拷贝到C:MinGWmsys1.0的对应目录下,注意,是全部。

ffmpeg-4.0.2

把下载的ffmpeg源码包放到home目录下面,打开C:MinGWmsys1.0下的msys.bat,进入ffmpeg源码根目录,创建build文件夹,进入文件夹,执行下面的命令:

$ ../configure --disable-static --enable-shared --enable-gpl --enable-version3 --enable-pthreads --enable-sdl

成功之后,执行make

make

但是会报如下错误:

"ws2tcpip.h is not compatible with winsock.h. Include winsock2.h instead."

字面意思是某个文件包含了winsock.h,但是应该包含winsock2.h。找了半天,最后想到一个办法,把C:MinGWinclude下面的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

目录
相关文章
|
9天前
|
Python Windows
在 Windows 平台下打包 Python 多进程代码为 exe 文件的问题及解决方案
在使用 Python 进行多进程编程时,在 Windows 平台下可能会出现将代码打包为 exe 文件后无法正常运行的问题。这个问题主要是由于在 Windows 下创建新的进程需要复制父进程的内存空间,而 Python 多进程机制需要先完成父进程的初始化阶段后才能启动子进程,所以在这个过程中可能会出现错误。此外,由于没有显式导入 Python 解释器,也会导致 Python 解释器无法正常工作。为了解决这个问题,我们可以使用函数。
15 5
|
12天前
|
编解码 Windows
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid
XviD是开源MPEG-4视频编码器,与DivX相似但后者非开源。早期MP4常使用XviD或DivX编码,现已被H.264取代。在Windows上集成FFmpeg的XviD编解码库libxvid,需访问<https://labs.xvid.com/source/>下载源码,解压后在MSYS环境中配置、编译和安装。之后重新配置FFmpeg,启用libxvid并编译安装。详细步骤包括configure命令、make和make install。成功后,通过`ffmpeg -version`检查是否启用libxvid。更多音视频开发技术可参考《FFmpeg开发实战:从零基础到短视频上线》。
54 0
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid
|
1月前
|
算法 Linux Windows
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
在Windows环境下为FFmpeg集成字幕渲染库libass涉及多个步骤,包括安装freetype、libxml2、gperf、fontconfig、fribidi、harfbuzz和libass。每个库的安装都需要下载源码、配置、编译和安装,并更新PKG_CONFIG_PATH环境变量。最后,重新配置并编译FFmpeg以启用libass及相关依赖。完成上述步骤后,通过`ffmpeg -version`确认libass已成功集成。
49 1
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
|
1月前
|
编解码 5G Linux
FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器
AVS3是中国首个8K及5G视频编码标准,相比AVS2和HEVC性能提升约30%。解码器libuavs3d支持8K/60P视频实时解码,兼容多种平台。《FFmpeg开发实战》书中介绍了在Windows环境下如何集成libuavs3d到FFmpeg。集成步骤包括下载源码、使用Visual Studio 2022编译、调整配置、安装库文件和头文件,以及重新配置和编译FFmpeg以启用libuavs3d。
43 0
FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器
|
24天前
|
Ubuntu
蓝易云 - Ubuntu18.04安装编译ffmpeg库
现在,你应该已经在你的Ubuntu 18.04系统上成功安装和编译了FFmpeg库。你可以通过运行 `ffmpeg -version`来验证安装是否成功。
25 0
|
1月前
|
数据库 Windows
第五十章 使用 ^SystemPerformance 监视性能 - Microsoft Windows 平台的 InterSystems IRIS 性能数据报告
第五十章 使用 ^SystemPerformance 监视性能 - Microsoft Windows 平台的 InterSystems IRIS 性能数据报告
26 0
|
1月前
|
Windows
LabVIEW在Windows平台上的图形导入
LabVIEW在Windows平台上的图形导入
28 0
|
1月前
|
Ubuntu Linux Shell
Android-NDK-clang 编译 FFmpeg
Android-NDK-clang 编译 FFmpeg
50 0
|
1月前
|
开发工具
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)
43 0
|
1月前
|
Linux 编译器 数据安全/隐私保护
Windows10 使用MSYS2和VS2019编译FFmpeg源代码-测试通过
FFmpeg作为一个流媒体的整体解决方案,在很多项目中都使用了它,如果我们也需要使用FFmpeg进行开发,很多时候我们需要将源码编译成动态库或者静态库,然后将库放入到我们的项目中,这样我们就能在我们的项目中使用FFmpeg提供的接口进行开发。关于FFmpeg的介绍这里就不过多说明。
122 0