使用NVIDIA GPU FFmpeg转码 YUV to H264(成功)

0. 官方教程

NVIDIA官方教程:链接,本篇内容主要参考2.2 Software Setup。

1. 安装显卡驱动

确保nvidia-smi能够正常使用:

使用NVIDIA GPU FFmpeg转码 YUV to H264(成功)_第1张图片

2. 安装CUDA toolkit 

注意要与显卡驱动版本对应,验证toolkit是否正确安装:

使用NVIDIA GPU FFmpeg转码 YUV to H264(成功)_第2张图片

3. 安装ffnvcodec

  • 下载地址
  • 编译方法:解压进入文件夹后
sudo make install
  • 验证安装
pkg-config --modversion ffnvcodec

         显示版本号证明安装成功:

4. 编译安装FFmpeg

  • 下载地址
  • 配置方法:
    • 进入ffmpeg-x.x文件夹
    • 调用./configure进行配置(注意配置正确的CUDA库路径)
./configure --enable-cuda 
            --enable-cuvid 
            --enable-nvenc 
            --enable-nonfree 
            --enable-libnpp 
            --extra-cflags=-I/usr/local/cuda/include #CUDA头文件路径
            --extra-ldflags=-L/usr/local/cuda/lib64  #CUDA lib路径
  • 多线程编译
make -j -s
  • 验证硬件加速是否启用成功
./ffmpeg -hwaccels

        左下角显示CUDA即为配置成功:

使用NVIDIA GPU FFmpeg转码 YUV to H264(成功)_第3张图片

  •  安装到系统路径中
make install

5. 测试效果

可以连接YUV格式的输入设备或者使用网上下载的.yuv文件进行测试,具体可以参考如下指令:

ffmpeg  -c:v rawvideo 
        -pix_fmt yuv420p     # 输入视频格式为yuv420p
        -s x  # 输入视频分辨率
        -i       # 输入视频文件路径或者设备号
        -c:v h264_nvenc      # 调用NVENC的H264编码器
        -preset fast         # 视频编码速度(影响质量)
        -b:v        # 设置比特率
                # 输出文件路径

下面用我配置好的FFmpeg进行测试:

使用NVIDIA GPU FFmpeg转码 YUV to H264(成功)_第4张图片

最终保存成H.264编码的mp4文件:

使用NVIDIA GPU FFmpeg转码 YUV to H264(成功)_第5张图片

6. 总结

 目前只是对FFmpeg工具的一个初步探索,具体的参数配置方面还没有深入去研究,接下来可能会去调研一下NVIDIA Video Codec SDK二次开发的内容。因为本人接触视频编码内容时间很短,了解也较为浅显,如有错误,希望指出,感谢阅读~

你可能感兴趣的:(音视频开发,ffmpeg,linux,视频编解码,h.264)