为什么ffmpeg cuda解码器比cpu解码器慢很多?

为什么ffmpeg cuda解码器比cpu解码器慢很多?
# cpu
ffmpeg -i test.ts -f null /dev/null -benchmark
# gpu
ffmpeg -hwaccel cuvid -hwaccel_output_format cuda -c:v h264_cuvid -i test.ts -f null /dev/null -benchmark

ffmpeg 4.4.2

CPU 比 GPU 快 1.5 倍。

为什么我实际上期望 GPU 会更快?

请注意,在这个管道中我甚至没有做任何编码。

答案1

-c:v h264_cuvid正在调用 CUVID,它比 NVENC 速度慢且效率低。将其替换为-c:v h264_nvenc

用于编码和解码的 CUVID 已有数十年历史,应视为已过时。它激活 GPU 的所有 CUDA 核心来执行该功能。可能需要的行为是调用 NVENC 或 NVDEC,它们对于视频编码和视频解码而言都更快且更节能。

有一些有用的方法可以使用 CUDA 来加速 FFmpeg 的视频编码任务,请参阅此处的 NVIDIA 示例:https://docs.nvidia.com/video-technologies/video-codec-sdk/11.1/ffmpeg-with-nvidia-gpu/index.html

另请参阅 FFmpeg 的文档,了解如何正确调用现代 NVENC/NVDEC:https://trac.ffmpeg.org/wiki/HWAccelIntro#NVDECCUVID

相关内容