為什麼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

相關內容