msys2+minGW方案编译ffmpeg的最佳实践

Posted 江海细流

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了msys2+minGW方案编译ffmpeg的最佳实践相关的知识,希望对你有一定的参考价值。

一、Win10 64bit编译环境的建立

1)从http://www.msys2.org/下载 msys2-x86_64-xxx.exe

2) 安装msys2到默认路径 C:\\msys64\\

3) 运行MSYS2 w64

4)执行 pacman -Syu 更新系统当出现提示时,选择y

5) 当窗口关闭时,重新打开msys2 w64 环境,如步骤3

6)再次执行 pacman -Su 当出现提示时,选择y

二、安装其他组件

1)pacman -S make //安装make命令工具

2)pacman -S diffutils //安装比较工具

3)pacman -S yasm //安装yasm汇编语言编译器,ffmpeg使用SIMD汇编指令进行加速

4)pacman -S mingw-w64-x86_64-gcc //64bit的mingw编译器

5)pacman -S mingw-w64-i686-gcc //32bit 的mingw编译器

6)pacman -S mingw-w64-x86_64-gtk3 //64bit的gtk库

7)pacman -S mingw-w64-i686-gtk3/32bit的gtk库

8)pacman -S nasm//安装汇编语言编译器,x264使用SIMD汇编指令进行加速

以上主要安装make工具,yasm,nasm汇编器(ffmpeg和x264使用了SIMD之类加速),gcc编译器,gtk图像框架。

三、下载pkg-config工具

pkg-config 工具在编译时可以根据xxx.pc查找对应的头文件和库。PC文件一般原理如下:

1. 把你的pc文件,直接放到/usr/lib/…默认路径下。

2. 把你的pc文件的路径写到PKG_CONFIG_PATH环境变量里。

比如,你可以在/etc/.bashrc的文件末尾添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/test/ffmpeg_build/lib/pkgconfig

export PKG_CONFIG_PATH

那么,pkg-config就会到/home/test/ffmpeg_build/lib/pkgconfig寻找*.pc文件

一般pkg-config 通过 pkg-config xxx –libs –cflags xxx就是你要找得库,通过xxx.pc可以分析该库头文件和库文件在哪个目录

比如查找 pkg-config libavcodec --libs --cflags

1)下载64bit工具

http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/pkg-config_0.23-2_win64.zip

解压 pkg-config.exe to C:\\msys64\\mingw64\\bin

2)下载32bit工具

http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip

解压 pkg-config.exe to E:\\msys64\\mingw32\\bin

四、拷贝intl.dll到以下文件夹

1)cd C:\\msys64\\mingw32\\bin

2)cp libintl-8.dll intl.dll

3)cd C:\\msys64\\mingw64\\bin

4)cp libintl-8.dll intl.dll

intl.dll 库是Windows系统很重要库,缺少它可能软件运行会异常。

五、下载源代码并编译

1)从ffmpeg官网下载源代码到C:\\mycode

2)从 C:\\msys64\\中运行msys2_shell.cmd -mingw64

3) cd C:\\mycode\\ffmepg

4)执行编译即可

六、本文为了方便,写了一个脚本。

1)编译64bit

a) 从 C:\\msys64\\中运行msys2_shell.cmd -mingw64

b) ./ffmpeg-build-win release 64

2)编译32bit

a) 从 C:\\msys64\\中运行msys2_shell.cmd -mingw32

b) ./ffmpeg-build-win release 32

如上图所示编译成功,非常顺利。使用VC编译器编译过程如下

1)运行VC64bit 环境命令行行提示符((x64-native-tools--for--xxx)

2) cd c:\\msys64

3)运行C:\\msys64\\msys2_shell.cmd -mingw64 -use-full-path

4. cd c:\\mycode

5. 执行 ./ffmpeg-build-win release 64 msvc

编译期间会出现以下报错

这是config.h头文件有中文字符所知,去掉中文即可,重新make即可

这是config.h头文件有中文字符所知,去掉中文即可,重新make即可

七、总结

在编译ffmpeg之前的要完成依赖库编译,也是同样方法的,基本思想可以理解msys2环境是一个Linux环境,minGW工具链就是该Linux默认的编译工具连,按照Linux编译思路编译即可。更多更新信息请关注公众号:AV_Chat

windows 7下mingw+msys编译ffmpeg

1-->下载安装MingW,mingw-get-inst-20120426.exe  http://sourceforge.net/projects/mingw/

安装路径 默认C:\MinGW 。勾选了 <1> C Compiler  <2> C++ Compiler <3>MSYS Basic System <4>MinGW Developer ToolKit

其中 <3>就安装了 msys。这样安装需要联网,自动下载mingw项目下一些工具文件。

安装完成后,为了方便VS200X以及VS2010调用ffmpeg的动态库,可以通过配置让ffmpeg编译时产生windows下调用dll对应的lib。根据我的VS2010安装目录,用noteplus notepad++ ue等支持Uinux换行的文本工具打开 C:\MinGW\msys\1.0\msys.bat

在最最前面加上下面一行

call "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"

将 msys.bat发送到桌面快捷方式,就可以方便打开命令窗口了,一个简单的linux shell。

这样 cd /e/ffmpeg/ 就切换到E:/ffmpeg/目录下

2--->下载安装yasm,因为编译ffmpeg里面的汇编代码需要yasm.exe,没有这个的话,也能编译通过,可能使用的时候,效率没有那么高。 http://yasm.tortall.net

Win32 VS2010 .zip (for use with VS2010 on 32-bit Windows) Version 1.2.0 Release: October 31, 2011

为了减少配置环境变量的麻烦,解压后把 vsyasm.exe 文件名修改成:yasm.exe,并放到系统目录下:C:WINDOWS\system32\下。

3--->下载安装ffmpeg。 http://www.ffmpeg.org Version 1.1 Release:January 7, 2013

4--->编译X264(项目需求)

http://www.videolan.org/developers/x264.html  下载 解压 得 x264-snapshot-20130114-2245

打开 msys.bat,命令行

1.$ cd e/ffmpeg/x264-snapshot-20130114-2245/

2.$ ./configure --enable-shared --disable-asm

3.$ make

4.$ make install

这样就把编译结果复制到 C:\MinGW\msys\1.0\local 下 bin include lib这三个文件夹下面。

输入命令有个技巧,可以复制后,在msys.bat的命令行窗口标题栏点击右键,以此选择--‘‘编辑--粘贴(P)‘‘。类似DOS,标记后即是复制。

如果编译失败或者重新编译,先运行make distclean或者make clean,再执行上面1--2--3--4

5--->下载SDL。没有SDL编译出来的ffplay.exe不能播放视频。

http://www.libsdl.org/download-1.2.php 最后有一个 win32 SDL-devel-1.2.15-mingw32.tar.gz (Mingw32)

解压后 bin include lib文件夹内容对应拷贝到C:\MinGW\msys\1.0\local 下 bin include lib这三个文件夹下。

使用UltraEdit打开刚刚拷贝的C:\MinGW\msys\1.0\local\bin下的 sdl-config文件
    把 prefix=/usr/*******  该成: prefix=c:/mingw
其中:c:/mingw 为 mingw的安装路径,请根据你的安装进行修改。为了编译时msys能识别sdl并开启 SDL support yes 进行编译。

以上是关于msys2+minGW方案编译ffmpeg的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

WINDOWS使用msys2编译ffmpeg(编译成功,无法使用)

Ubuntu下使用mingw-w64交叉编译ffmpeg

ffmpeg学习记录源码编译windows下vs2019构建demo调试

msys2 (mingw) 默认库/包含路径配置

使用 PyInstaller 在 MSYS2/MinGW 中编译 GTK 软件的问题

win10下使用msys+vs2019编译ffmpeg源码