ffmpeg 解码 程序(Linux下编译FFmpeg支持硬件编解码)

资源信息

本次编译FFmpeg库需要使用到如下资源版本:

  • 操作系统:Linux系统的Redhat7.6,64位
  • CPU:I5处理器
  • 英伟达显卡:GTX1050Ti ,驱动版本:NVIDIA- 510.73
  • FFmpeg版本:4.1.3
  • CUDA版本:11.0
  • VideoCodecSDK版本 :9.0.18
安装英伟达显卡驱动

打开链接地址:https://www.nvidia.com/drivers,进入英伟达官网选择显卡驱动型号后,下一步点击SEARCH,搜索驱动版本,如下:

ffmpeg 解码 程序(Linux下编译FFmpeg支持硬件编解码)(1)

搜索到最新的驱动版本,点击下载即可,如下:

ffmpeg 解码 程序(Linux下编译FFmpeg支持硬件编解码)(2)

经过漫长的等待下载之后,将安装包设置最高权限,然后就可以直接命令安装,如下:

Sudo chmod 777 nvidia-Linux-x86_64-510.73.run

./ NVIDIA-Linux-x86_64-510.73.run

安装之后通过命令查看是否安装成功,检查命令:nvidia-smi,如果有打印出驱动版本号则标识安装成功,输出如下结果:

ffmpeg 解码 程序(Linux下编译FFmpeg支持硬件编解码)(3)

查看集成显卡是否关闭,查看nouneau命令如下:lsmod | grep nouveau,如果没有输出内容就代表集成显卡已关闭。

另外如果想要卸载显卡驱动,可以使用卸载命令,卸载命令如下:

sh ./NVIDIA-Linux-x86_64-510.73.run --uninstall

安装CUDA

安装完驱动之后可以得到需要cuda版本,打开链接地址:

https://developer.nvidia.com/cuda-downloads,选择目标系统平台下载,如下:

ffmpeg 解码 程序(Linux下编译FFmpeg支持硬件编解码)(4)

下载完成之后,就可以通过命令直接安装,如下:

./cuda_11.0.168_418.67_linux.run

安装完之后,需要查看是否安装成功,需要在root账户下输入命令nvcc -V,有出现CUDA版本号就表示成功。

安装Video Codec SDK

下载ffnvcodec,要根据驱动版本和cuda版本下载对应的版本,下载链接地址:https://github.com/FFmpeg/nv-codec-headers,

下载完之后直接通过命令安装,如下:

cd nv-codec-headers-master/

make && make install

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

编译FFmpeg

打开链接地址:http://www.ffmpeg.org/download.html,选择FFmpeg版本下载,如下:

ffmpeg 解码 程序(Linux下编译FFmpeg支持硬件编解码)(5)

下载完源码之后,进入源码目录,通过命令直接编译,如下:

cd ffmpeg-4.1.3/

./configure --enable-gpl --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libx264 --enable-nonfree --extra-cflags="-I/usr/local/cuda-11.0/include" --extra-ldflags=-L/usr/local/cuda-11.0/lib64 --extra-cflags=-fPIC--enable-shared--enable-static --enable-nvenc --enable-nvdec --enable-cuda --enable-cuvid --enable-libnpp

make -j$(nproc) && make -j$(nproc) install

如果需要调试FFmpeg源码,可以设置debug=3,打开调试模块,如下:

cd ffmpeg-4.1.3/

./configure --enable-gpl --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libx264 --enable-nonfree --extra-cflags="-I/usr/local/cuda-11.0/include" --extra-ldflags=-L/usr/local/cuda-11.0/lib64 --extra-cflags=-fPIC --enable-shared --enable-static --enable-nvenc --enable-nvdec --enable-cuda --enable-cuvid --enable-libnpp --enable-debug=3 --disable-optimizations --disable-asm --disable-stripping

make -j$(nproc) && make -j$(nproc) install

编译完成之后设置FFmpeg库目录,如下:

Vi /etc/ld.so.conf.d/ffmpeg.conf

/usr/local/lib 最后一行加入

:wq 退出并保存vi编辑器

ldconfig 立即生效ffmpeg.conf

测试硬件编解码

测试硬件编码,命令如下:

ffmpeg -i in.MP4 -c:v h264_nvenc -c:a aac out.mp4

测试硬件解码,命令如下:

ffmpeg -hwaccel nvdec -i in.mp4 out.yuv

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页