Win7系统编译支持x264的64位ffmpeg
参考了众位博友的文章,几番折腾后,终于在WIN7系统下编译出了支持x264的64位ffmpeg。现将编译过程记录一下,作为备忘。
一,环境准备
1,下载篇
1.1 ffmpeg,地址 http://ffmpeg.org/download.html,获取ffmpeg-4.2.1.tar.bz2
1.2 x264,地址 http://download.videolan.org/pub/videolan/x264/snapshots/,获取last_stable_x264.tar.bz2
1.3 mingw64,地址 http://mingw-w64.sourceforge.net/ 或 http://mingw-w64.org/doku.php/download,获取mingw-w64-install.exe
1.4 msys,地址 http://www.mingw.org/wiki/MSYS/ ,获取 MSYS-1.0.11.exe
1.5 pexports,地址 https://sourceforge.net/projects/mingw/files/MinGW/Extension/pexports/,获取pexports-0.47-mingw32-bin.tar.xz
1.6 yasm,地址 http://yasm.tortall.net/Download.html,获取yasm-1.3.0-win64.exe
1.7 pkg-config,地址 http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/,获取pkg-config_0.23-3_win32.zip
1.8 glib,地址 http://ftp.acc.umu.se/pub/gnome/binaries/win32/glib/,获取glib_2.18.4-1_win32.zip
如果您不想一个一个下载,也可以到这里下载工具集ffmpeg64位编译工具集,把上边需要的工具放到一块了。
2,安装篇
2.1 安装mingw64
安装路径 C:\mingw-w64

2.2 安装msys
安装在mingw64的目录下 C:\mingw-w64\msys\1.0

安装完成之后,到C:\mingw-w64\msys\1.0\etc目录中, 将fstab.sample 复制一份,且将其更名为fstab,打开fstab,将其中相应的内容改为mingw64的安装目录,图中红线框所示,保存退出。

接着编辑C:\msys\1.0\msys.bat文件,在开头加上call "D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat",如下图

2.3 配置pexports和yasm
将解压缩的pexports.exe文件,拷贝到 C:\mingw-w64\msys\1.0\bin
将yasm-1.3.0-win64.exe改名为yasm.exe,拷贝到C:\mingw-w64\msys\1.0\bin
将pkg-config_0.23-3_win32.zip解压,得到pkg-config.exe,拷贝到C:\mingw-w64\msys\1.0\bin
将glib_2.18.4-1_win32.zip解压,得到libglib-2.0-0.dll,拷贝到C:\mingw-w64\msys\1.0\bin
二,编译
将ffmpeg和x264源代码压缩包解压缩,放到一块。
双击 C:\mingw-w64\msys\1.0 目录下的msys.bat文件,启动MINGW32窗口
1,编译x264
1.1 configure
在MINGW32窗口中,cd到x264源码根目录,然后执行
./configure --enable-static --enable-shared --disable-asm --prefix="D:\Project\Survey\ffmpeg\lib64" --host=x86_64-w64-mingw32
--disable-asm的原因是:没有asm,所以忽略掉。
配置结果为

1.2 make & make install
接着执行以下命令
make
make install
此时,会在lib64目录下,生成以下几个文件夹

bin --> x264.exe 和 libx264-157.dll
include --> x264.h 和 x264_config.h
lib --> pkgconfig,libx264.a 和 libx264.dll.a
存在一个问题,怎么没有.lib文件呢?
1.3 使用.dll文件,生成.lib文件
命令行cd到 lib64/bin/ 目录下
cd ../lib64/bin
执行下面命令,生成libx264-157.def文件
pexports libx264-157.dll > libx264-157.def
接着进入VS2010的命令行,切换到bin目录下,根据.def文件生成.lib文件

输入 LIB /machine:X86 /DEF:libx264-157.def

此时在bin目录下,便生成了.lib文件

2,编译ffmpeg
MINGW32窗口中,cd到ffmpeg根目录
2.1 configure
./configure --prefix="D:\Project\Survey\ffmpeg\lib64" --enable-shared --arch=x86_64 --host-os=win64 --extra-cflags="-ID:\Project\Survey\ffmpeg\lib64\include" --extra-ldflags="-LD:\Project\Survey\ffmpeg\lib64\bin" --enable-gpl --enable-libx264 --enable-encoder=libx264
碰到如下错误

查看编译日志,在目录\ffmpeg\ffbuild\config.log(configure过程中,碰到错误详细信息,在这里都可以找到)

解决办法:修改/bin目录下libx264-157.dll和libx264-157.lib的名称
libx264-157.dll --> libx264.dll
libx264-157.lib --> libx264.lib
再次执行configure命令
2.2 make & make install
make
make install
安装成功后,在lib64/bin目录下,会生成ffmpeg的库文件及可执行文件,在lib64/include目录下,有ffmpeg的头文件。
2.3 拷贝依赖库
运行lib64/bin目录下的ffmpeg.exe,会提示缺少libwinpthread-1.dll
从C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin把libwinpthread-1.dll拷贝到lib64/bin目录即可。
编译过程中参考了以下文章,表示感谢!
https://blog.csdn.net/listener51/article/details/81609661
https://blog.csdn.net/najiutan/article/details/43762759
更多推荐
所有评论(0)