官网链接:
CompilationGuide – FFmpeghttps://trac.ffmpeg.org/wiki/CompilationGuide在官网上介绍了四种windows上的编译方法,目前仅试了第一种
CompilationGuide/MinGW – FFmpeghttps://trac.ffmpeg.org/wiki/CompilationGuide/MinGW
二、具体操作步骤1、预置条件:
操作系统:win10 64bit
vs:vs2019
2、从官网上下载安装x86_64版本安装程序。
MSYS2Software Distribution and Building Platform for Windowshttps://www.msys2.org/ 安装完成之后,先把安装目录下的msys2_shell.cmd中注释掉的rem set MSYS2_PATH_TYPE=inherit改成set MSYS2_PATH_TYPE=inherit。这是为了将vs的环境继承给MSYS2。
3、按照官网指导,安装gcc、pkg-config等软件包。
pacman -Syu pacman -Su pacman -S --needed base-devel mingw-w64-x86_64-toolchain
三、注意事项
1、检查编译环境,是否是如下路径
# which cl link yasm cpp /c/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.29.30133/bin/HostX64/x64/cl /c/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.29.30133/bin/HostX64/x64/link /usr/bin/yasm /mingw64/bin/cpp
注意:重命名msys64/usr/bin/link.exe 为msys64/usr/bin/link.bak, 避免和MSVC 的link.exe冲突。
2、使用x64 Native Tools Command prompt for VS 2019打开msys2界面。命令行:
msys2_shell.cmd -mingw64
3、配置include和lib路径。需要注意的是写include文件和lib文件路径是不要加tab键,否则可能会导致生成的makefile异常。
./configure --toolchain=msvc --target-os=win64
--arch=x86_64
--enable-shared
--enable-small
--enable-version3
--enable-gpl
--enable-nonfree
--disable-stripping
--disable-encoders
--disable-decoders
--enable-decoder=h264
--enable-encoder=mjpeg
--enable-encoder=mpeg4
--prefix=./build
--extra-cflags="-I/home/crystl/build/include -I/home/crystl/build/include/10.0.20348.0/ucrt
-I/home/crystl/build/include/10.0.20348.0/um -I/home/crystl/build/include/10.0.20348.0/shared
-I/home/crystl/build/include/vs_include"
--extra-ldflags="-LIBPATH:/home/crystl/build/lib
-LIBPATH:/home/crystl/build/lib/vs_x64
-LIBPATH:/home/crystl/build/lib/10.0.20348.0/ucrt/x64
-LIBPATH:/home/crystl/build/lib/10.0.20348.0/um/x64
-LIBPATH:/home/crystl/build/lib/10.0.20348.0/ucrt_enclave/x64"
这里的include文件是从如下文件夹里面拷贝出来的
C:Program Files (x86)Windows Kits10Include10.0.20348.0
C:Program Files (x86)Microsoft Visual Studio2019ProfessionalVCToolsMSVC14.29.30133include
lib库是从如下文件夹里面拷贝出来的
C:Program Files (x86)Windows Kits10Lib10.0.20348.0
C:Program Files (x86)Microsoft Visual Studio2019ProfessionalVCToolsMSVC14.29.30133libx64
4、若是执行./configure,生成makefile失败,可以查看ffmpegffbuildconfig.log,排查问题。
5、ERROR: nvenc requested, but not all dependencies are satisfied: ffnvcodec
NVIDIA headers已经不包含在ffmpeg工程里面,需要自己在本地编译。
Using FFmpeg with NVIDIA GPU Hardware Acceleration :: NVIDIA Video Codec SDK documentationhttps://docs.nvidia.com/video-technologies/video-codec-sdk/ffmpeg-with-nvidia-gpu/index.html
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git cd nv-codec-headers make make install
配置路径包含cuda的lib库和include头文件
./configure --enable-nonfree -–enable-cuda-sdk –enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
并且要安装对应版本的SDK文件,SDK下载路径:
https://developer.nvidia.com/nvidia-video-codec-sdk/downloadhttps://developer.nvidia.com/nvidia-video-codec-sdk/download



