天天看点

LINUX下,ffmpeg增加NVIDIA硬件编解码的步骤及解决办法

  • 官方关于ffmepg的网页
https://developer.nvidia.com/FFmpeg
  • 下载驱动
https://www.nvidia.com/drivers
  • 下载CUDA
https://developer.nvidia.com/cuda-downloads
  • 下载ffmpeg
http://www.ffmpeg.org/download.html
  • 安装ffnvcodec
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make && sudo make install      
  • 编译ffmpeg 
cd ffmpeg-4.0.2
 
./configure --disable-asm --disable-x86asm \
 --enable-cuda --enable-cuvid --enable-nvenc \
 --enable-nonfree --enable-libnpp \
 --extra-cflags=-I/usr/local/cuda/include \
 --extra-cflags=-fPIC --extra-ldflags=-L/usr/local/cuda/lib64
# --enable-shared --enable-pic 
 
make -j8
sudo make install      
  • 验证

退出当前终端,重新进入一个,输入命令:

ffmpeg -decoders | grep h264      

输出的第一行,应该是:ffmpeg version 4.0.2

VFS..D h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10

V..... h264_v4l2m2m     V4L2 mem2mem H.264 decoder wrapper (codec h264)

V..... h264_cuvid           Nvidia CUVID H264 decoder (codec h264)

ffmpeg -encoders | grep nv      

V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)

V..... h264_v4l2m2m      V4L2 mem2mem H.264 encoder wrapper (codec h264)

V..... nvenc                     NVIDIA NVENC H.264 encoder (codec h264)

V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)

  • 测试
ffmpeg -y -hwaccel cuvid -c:v h264_cuvid -vsync 0 -i 2018.MOV -vcodec h264_nvenc -preset slow -b:v 2000k 2017.h264      

注意,这里的preset参数,有的不能用了。

  • 出错及解决办法
  1. 吾电脑提示要加上--disable-x86asm参数。
  2. configure时出错,提示:

ERROR: cuda requested, but not all dependencies are satisfied: ffnvcodec

解决办法:

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
 
cd nv-codec-headers
 
make && sudo make install      

继续阅读