¿Por qué el decodificador ffmpeg cuda es mucho más lento que el decodificador de CPU?

¿Por qué el decodificador ffmpeg cuda es mucho más lento que el decodificador de 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

la CPU es 1,5 veces más rápida que la GPU.

¿Por qué realmente espero que la GPU sea mucho más rápida?

Tenga en cuenta que en este proceso ni siquiera hago ninguna codificación.

Respuesta1

-c:v h264_cuvidestá llamando a CUVID, que es más lento y menos eficiente que NVENC. Reemplácelo con-c:v h264_nvenc

CUVID para codificar y decodificar tiene décadas de antigüedad y debe considerarse depreciado. Enciende todos los núcleos CUDA de la GPU para realizar la funcionalidad. El comportamiento probablemente deseado es invocar NVENC o NVDEC, que son más rápidos y dramáticamente más eficientes energéticamente tanto para la codificación como para la decodificación de video.

Hay formas útiles de usar CUDA para acelerar las tareas de codificación de video con FFmpeg; consulte los ejemplos de NVIDIA aquí:https://docs.nvidia.com/video-technologies/video-codec-sdk/11.1/ffmpeg-with-nvidia-gpu/index.html

Consulte también la documentación de FFmpeg sobre cómo llamar adecuadamente a NVENC/NVDEC modernos:https://trac.ffmpeg.org/wiki/HWAccelIntro#NVDECCUVID

información relacionada