# 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
Die CPU ist 1,5-mal schneller als die GPU.
Warum erwarte ich eigentlich, dass die GPU viel schneller sein wird?
Bitte beachten Sie, dass ich in dieser Pipeline überhaupt keine Kodierung durchführe.
Antwort1
-c:v h264_cuvid
ruft CUVID auf, was langsamer und weniger effizient ist als NVENC. Ersetzen Sie es durch-c:v h264_nvenc
CUVID zum Kodieren und Dekodieren ist Jahrzehnte alt und sollte als veraltet betrachtet werden. Es aktiviert alle CUDA-Kerne der GPU, um die Funktion auszuführen. Das wahrscheinlich gewünschte Verhalten besteht darin, NVENC oder NVDEC aufzurufen, die sowohl für die Videokodierung als auch für die Videodekodierung schneller und deutlich energieeffizienter sind.
Es gibt nützliche Möglichkeiten, CUDA zu verwenden, um Videocodierungsaufgaben mit FFmpeg zu beschleunigen. Hier finden Sie Beispiele von NVIDIA:https://docs.nvidia.com/video-technologies/video-codec-sdk/11.1/ffmpeg-with-nvidia-gpu/index.html
Lesen Sie auch die Dokumentation von FFmpeg, um zu erfahren, wie Sie modernes NVENC/NVDEC richtig aufrufen:https://trac.ffmpeg.org/wiki/HWAccelIntro#NVDECCUVID