FFmpeg使用GPU编解码

  • 本文内容只针对NVIDIAGPU

网络上面有一些教程需要重新编译FFmpeg,经过我的实验,直接使用软件包管理器安装的FFmpeg也可以直接使用GPU加速。

请提前安装CUDA

查看支持的编解码器:

1
ffmpeg -codecs | grep cuvid

转码命令:

1
ffmpeg -hwaccel cuvid -c:v 解码器 -i "input.mkv" -c:v 编码器 "output.mkv"

如果编解码器都在GPU上,则添加-hwaccel cuvid可以防止解码后的数据在主机和设备之间移动,如果使用GPU解码、使用CPU编码,则不需要添加这一个参数。

例如使用h264_cuvid解码再用h264_nvenc编码:

1
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i "input.mkv" -c:v h264_nvenc "output.mkv"

例如使用hevc_cuvid解码再用hevc(在CPU上)编码:

1
ffmpeg -c:v hevc_cuvid -i "input.mkv" -c:v hevc "output.mkv"

参考

https://yukihane.work/li-gong/ffmpeg-with-gpu
https://blog.csdn.net/zengraoli/article/details/119789655
https://www.jianshu.com/p/01dcd43ac4ed
https://developer.nvidia.com/zh-cn/blog/nvidia-ffmpeg-transcoding-guide/