ffmpeg编译,支持QSV,CUDA

本文档详细介绍了在Windows系统中,如何配置和编译FFmpeg以集成Intel Media SDK (mfx) 和NVIDIA Codec Headers。步骤包括下载相关工具,编译mfx Dispatch库,修改配置文件,设置环境变量,编译nv-codec-headers,以及最后编译FFmpeg。特别强调了在编译过程中需要注意的细节,如修改Makefile.am文件,确保正确的路径设置,以及处理可能遇到的错误。此外,还提供了针对32位系统的编译说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、配置环境                    

    1、下载工具

     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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值