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

最新の NVENC/NVDEC を適切に呼び出す方法については、FFmpeg のドキュメントも参照してください。https://trac.ffmpeg.org/wiki/HWAccelIntro#NVDECCUVID

関連情報