Ich habe in der vergangenen Woche Tests zum Thema Videoschnitt, bzw. eigentlich eher Transcoding von und nach h265/hevc in 4k50 unter Debian auf diesen drei Systemen gemacht:
#1: CPU: Intel i3-4330; GPU: Nvidia GTX 950 (dediziert); RAM: 16GB
#2: CPU: Intel i3-7100; GPU: Intel HD 630 (integriert); RAM: 8GB
#3: CPU: AMD Ryzen 7 5700G; GPU: AMD Radeon RX Vega 8 (integriert); RAM: 64GB
Kurzfassung:
Alle drei Systeme sind (in verschiedenem Ausmaß) viel zu langsam für Software-Transcodierung in Echtzeit. Hardwarebeschleunigt lässt sich das Videomaterial auf allen Systemen etwa in Echtzeit transcodieren.
ffmpeg-Beispiele:
Intel-/AMD-GPU mit vaapi:
Code:
ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i input.mp4 -c:v hevc_vaapi output.mp4
Nvidia-GPU mit cuda/nvenc:
Code:
ffmpeg -hwaccel cuda -hwaccel_device /dev/dri/renderD129 -hwaccel_output_format cuda -i input.mp4 -c:v hevc_nvenc output.mp4
Als grafische Videoschnitt-Software habe ich Avidemux, Openshot, Flowblade, und auf den vaapi-Systemen zusätzlich auch Shotcut getestet.
Avidemux kann in jeder Konstellation Videos sinnvoll schneiden (was hardwarebeschleunigtes Abspielen beinhaltet) und transcodieren. Mann muss für Letzteres nur das passende Profil auswählen.
Videos die ausschließlich an I-Frames geschnitten sind und auch sonst keine Effekte enthalten die Rendering erfordern, können sinnvollerweise ohne Reencodierung wieder geschrieben werden, was die Hardwareanforderungen drastisch reduziert. Das ist meines Wissens nach ein Alleinstellungsmerkmal gegenüber den anderen drei Programmen.
Openshot kann prinzipiell auf allen Systemen Videos in h265 encodieren. Allerdings ist es etwas wählerisch, ob es das Eingangsmaterial überhaupt richtig öfnen kann. Beim 4k-Demomaterial von Bug Buck Bunny und Jellyfish geht es. Und auch mein eigentliches Produktionsmaterial, Videos aus einer DJI Osmo Action 5, werden geöffnet. Anderes Testmaterial, der Mitschnitt einer Fernsehaufzeichnung in h265/4k wird zwar geöffnet und kann transcodiert werden, wird aber nicht in der Vorschau abgespielt.
Ob der Schnitt sinnvoll möglich ist hängt im Wesentlichen von der Bitrate des Eingangsmaterials ab. Das Material aus der Actioncam ist h265 4k50 mit 60MBit/s. Auch das Vorschau-Video wird hardwaredecodiert abgespielt, aber das Cachen ist auf allen drei System zu langsam, so dass es immer wieder zu Pausen in der Wiedergabe kommt, bis der Cache wieder gefüllt ist. Das ist unabhängig von der CPU. Der 5700G ist im gleichen Maß zu langsam wie der i3-4330, selbst wenn bei Beiden das Eingangsvideo im RAM liegt. Ich gehe daher davon aus, dass dies ein Softwarelimit von Openshot ist. Reduziere ich die Bitrate zunächst auf 40MBit/s, dann läuft die Wiedergabe der Vorschau auf allen drei Systemen flüssig.
Auf dem Nvidia-System stehen hardwarebeschleunigte h265-Profile seltsamerweise nicht zu Verfügung, auch wenn das Transcoding (mit ffmpeg und Avidemux) eigentlich funktioniert.
Flowblade kann laut Changelogs h265 hardwarebeschleunigt prinzipiell nur mit nvenc encodieren, nicht aber mit vaapi. Und auf dem Nvidia-System sehe ich tatsächlich ein Profil für nvenc-hevc. Allerdings wird das Video trotzdem in Software encodiert, wenn ich dieses angebliche Hardwareprofil auswähle.
Shotcut kann auf beiden vaapi-Systemen hardwarebeschleunigt encodieren. Allerdings wird die Videovorschau in Software decodiert, was auf Beiden zu langsam für sinnvolles Arbeiten ist.