一、配置环境
1、下载工具
-
- 下载msys2,并安装
- 下载ffmpeg
2、编译库(64位)
a、在系统开始菜单中启动MSYS2 MSYS,在终端中执行以下升级操作:
pacman –Syu
/* 重新启动MSYS2 MSYS */
pacman -Su
pacman –S gcc
pacman –S mingw-w64-x86_64-toolchain
pacman –S mingw-w64-i686-toolchain
pacman –S base-devel
pacman –S vim
pacman –S nasm
pacman –S make
c、修改mfx_dispatch/Makefile.am文件,把libintel_gfx_api-x86.a和libintel_gfx_api_x64.a修改为以.la为后缀;
b、拷贝mfx_dispatch和ffmpeg至msys2/home目录下;
d、打开msys64位的命令行窗口,通过命令进入mfx_dispatch目录,进行以下操作:
autoreconf -i ./configure --host=x86_64-w64-mingw32 --prefix=/usr/local make -j make install |
e、编译nv-codec-headers,编译之后会自动放在/usr/local下
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install
f、输入命令 export PKG_CONFIG_PATH=path,path是mfx和nv-codec-headers编译之后的路径
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
g、编译ffmpeg
./configure --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --enable-libmfx --enable-encoder=h264_qsv --enable-decoder=h264_qsv --enable-cuda --enable-cuvid --enable-nvenc
make -j8
make install
备注:在执行make -j8时,如果报错了,如下图,则需要在./configure命令的后面添加关联libmfx的头文件目录和库文件目录,如:--extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib。 f、通过msys64位的命令行窗口进入ffmpeg目录,进行以下操作:
3、注意事项
a、2中的c,如果不修改,会出现编译不通过的情况;
b、编译过程中要注意32位和64位;
c、export PKG_CONFIG_PATH指定的路径一定要正确,否则在编译ffmpeg会出现libmfx not found.
d、编译ffmpeg命令中,网上很多帖子说了要加 --disable-demuxers( 注意使用硬解码的时候应该关闭多路复解),但在编译中发现,加了这条指令后,avformat_open_input无法打开音视频流(error:-1094995529),如果没加则能正常使用。
ps:上述是编译64位ffmpeg-qsv库,如果要编译32位的只需要修改编译mfx的命令和ffmpeg的命令,将64位的改为32位。(其实也可以直接打开msys 32位,来编译,这样默认就是32位,可以不用指定编译器)
libmfx编译:
autoreconf -i
./configure --host=i686-w64-mingw32 --prefix=/usr/local
make -j
make install
备注:Linux 编译时:./configure --prefix=/usr/local/ffmpegx86 --enable-shared --extra-cflags="-m32" --extra-ldflags="-m32" --extra-cxxflags="-m32"
ffmpeg编译:
./configure --prefix=/usr/local/ffmpeg --arch=x86 --enable-shared --enable-libmfx --enable-encoder=h264_qsv --enable-decoder=h264_qsv
make -j8
make install
CentOS
#安装nv-codec-headers
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
sudo make
sudo make install
#安装x265
wget http://ftp.videolan.org/pub/videolan/x265/x265_2.6.tar.gz
tar -xvf x265_2.6.tar.gz
cd x265_v2.6/build/linux/
sh ./make-Makefiles.bash
make
make install
#下载ffmpeg
#编译ffmpeg
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
./configure --prefix=/usr/local/ffmpeg --enable-ffplay --enable-cuda --enable-cuvid --enable-nvenc --enable-gpl --enable-libfreetype --enable-libx264 --enable-nonfree --extra-cflags=-I/usr/local/nvida/include --extra-ldflags=-L/usr/local/nvida/lib64
sudo make
sudo make install