其实很简单。吾之所以费了这么大的事情,关键就在于,试图在WIN7虚拟机上编译,于是有各种莫名其妙的错误。
参考:https://www.jianshu.com/p/5f175dec9109。
- 环境准备
WIN10,VS2015。
- 下载FFmpegInterop
https://github.com/microsoft/FFmpegInterop
- 下载ffmpeg
下载、解压、改名ffmpeg,放在FFmpegInterop下。
- 下载安装MSYS2
下载x86_64;安装在c:\msys64
- 配置
c:\msys64\usr\bin目录下,把link.exe改名为link.bak,这样可以调用VS的link。
编辑C:\msys64\msys2_shell.cmd:
rem set MSYS2_PATH_TYPE=inherit
改成
set MSYS2_PATH_TYPE=inherit
编辑C:\msys64\home\XXXX\.bashrc
export PATH=/C/'Program Files (x86)'/'Microsoft Visual Studio 14.0'/VC/bin/amd64:${PATH}
- 启动MSYS2
set MSYS2_BIN="C:\msys64\usr\bin\bash.exe"
cd c:\msys64
msys2_shell.cmd -mingw64
右键,options,text,Character set改为UTF-8。
- MSYS2安装软件
参考中建议使用MinGW-w64方式。
pacman -S mingw-w64-x86_64-toolchain
pacman -S nasm
# pacman -S make gcc diffutils pkg-config
- 检查编译命令
$ which cl
/C/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/cl
$ which link
/C/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/link
$ which yasm
/usr/bin/yasm
$ which cpp
/mingw64/bin/cpp
- 编译x264
下载,解压,编译。
./configure \
--prefix=../lib-ffmpeg \
--host=x86_64-w64-mingw32 \
--enable-shared --extra-ldflags=-Wl,--output-def=libx264.def
make
make install
转换为dll
#若要生成64位lib文件则输入如下命令:
lib /machine:X64 /def:libx264.def
#若要生成32位lib文件则输入如下命令:
lib /machine:i386 /def:libx264.def
- configure
修改FFmpegConfig.sh
--enable-gpl \
--enable-nonfree \
--enable-libx264 \
--extra-cflags="-I${BUILD_LIBS}/include" \
--extra-ldflags="-LIBPATH:${BUILD_LIBS}/lib"
执行:
./FFmpegConfig.sh Win10 x64
说是把新生成的config.h文件打开后转换为UTF-8格式。这样可以避免非常多的警告。
- make
./BuildFFmpeg.bat win10 x64
- 检查32位还是64位:
查看32位还是64位:
dumpbin /headers libx264.dll
查看符号清单(导出函数)
dumpbin /exports libx264.dll > libx264-exports.txt