ffmpeg vs2017的一种编译方式
下载 yasm
将 yasm-1.3.0-win64.exe 复制到 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
重命名为 yasm.exe
安装 msys2
进入msys2的安装路径,我这里的路径是D:\mysys64,编辑该目录下的msys2_shell.cmd文件,在setlocal后加入一行
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"

执行 msys2_shell.cmd
windows系统默认是gbk编码,编译过程中可能出现乱码,需要修改该窗口的text为gbk编码,右键点击窗口选择Options,再选择Text,修改编码为gbk
进入FFmpeg的源码目录进行编译
cd /f/ffmpeg-4.2.2/
这里提供一个我是用的编译选项,自己根据需要可以进行修改
./configure --enable-gpl --enable-version3 --enable-shared --toolchain=msvc --prefix=x64 \
--enable-libsoxr \
--enable-libx264 \
--enable-encoder=png \
--enable-decoder=png \
--enable-demuxer=image2 \
--enable-protocol=file \
--enable-zlib \
--enable-ffnvcodec \
--enable-cuvid \
--enable-nvenc \
--enable-nvdec \
--enable-libfdk_aac \
--enable-nonfree \
--enable-libfreetype \
--enable-libfontconfig \
--enable-libfribidi \
--enable-decklink \
--extra-cflags=-I/f/ffmpeg-4.2.2/decklink \
--extra-ldflags=-LIBPATH:/f/fdk-aac-2.0.1/install/lib \
--extra-cflags=-I/f/fdk-aac-2.0.1/install/include \
--extra-ldflags=-LIBPATH:/d/soxr/lib \
--extra-cflags=-I/d/soxr/include \
--extra-ldflags=-LIBPATH:/f/Downloads/x264-master/builds/lib \
--extra-cflags=-I/f/Downloads/x264-master/builds/include \
--extra-ldflags=-LIBPATH:/f/libpng/lpng1637/projects/vstudio/Release \
--extra-ldflags=-LIBPATH:/f/libpng/zlib/contrib/vstudio/vc14/x64/ZlibStatRelease \
--extra-cflags=-I/f/libpng/zlib \
--extra-cflags=-I/f/freetype_2.10.4/include \
--extra-ldflags=-LIBPATH:/f/freetype_2.10.4 \
--extra-cflags=-I/f/libfontconfig_2.13.0_msvc15/include \
--extra-ldflags=-LIBPATH:/f/libfontconfig_2.13.0_msvc15/lib/x64 \
--extra-cflags=-I/f/libfribidi_v1.0.10_msvc15/include \
--extra-ldflags=-LIBPATH:/f/libfribidi_v1.0.10_msvc15/lib/x64
make -j4
make install
错误处理
查看 ffbuild/config.log 错误信息,进行对应更改
cl.exe is unable to create an executable file.
cl.exe: command not found
C compiler test failed.
export PATH=${PATH}:/c/'Program Files (x86)'/'Microsoft Visual Studio'/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64
cmp: command not found
pacman -S diffutils
pkg-config not found
pacman -S pkg-config
make: 未找到命令
pacman -S make
常量中有换行符
全局搜索CC_IDENT,删除中文字符
checking for a Python interpreter with version >= 3... none
configure: error: no suitable Python interpreter found
export PATH=${PATH}:/d/Python/Python37
msys pacman换源
http://www.blogdaren.com/post-2589.html
ERROR: cuvid requested, but not all dependencies are satisfied: ffnvcodec
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
make
将Makefile 中 PREFIX = /usr/local 改为 PREFIX = /usr
make install
其他问题及第三方库编译
github上一个编译ffmpeg的仓库可以作为参考,一些第三方库里面已经编译好,可以直接使用
https://github.com/ShiftMediaProject/FFmpeg/tree/master/SMP
ffmpeg官网的编译指导也可以参考
编译 x264
下载源码:x264, the best H.264/AVC encoder - VideoLAN
pacman -S mingw-w64-x86_64-gcc
安装nasm https://github.com/ShiftMediaProject/VSNASM/releases/latest
./configure --prefix=./build --enable-win32thread --enable-shared --enable-static --enable-strip --extra-ldflags=-Wl,--output-def=libx264.def
make
libx264.dll.a 修改为 libx264.lib
编译 zlib
使用pacman -S zlib/zlib-dev 安装的版本与ffmepg不兼容,需要自己编译或安装
先卸载已安装的版本,否则优先使用的还是mingw目录下的版本
pacman -R zlib-devel
pacman -R zlib
编译 fdk-aac
fdk-aac其实提供了在windows下的一个编译脚本Makefile.vc,使用msvc nmake去编译即可
在vs2017提供命令工具中直接进入fdk-aac的源码目录,使用如下命令进行编译
nmake -f Makefile.vc prefix=install install
更多推荐

所有评论(0)