Der Nutzen von Grafikkarten bei Videobearbeitung und -schnitt

muzik

Lt. Junior Grade
Registriert
März 2011
Beiträge
393
Hallo allerseits,

ich frage mich schon einige Zeit wie sinnvoll Grafikkarten eigentlich bei Videoschnittprogrammen sind...

Wenn man sich sonst die Antworten auf eben diese Frage anschaut, so ist das Erste, was man überall ließt: "Die Grafikkarte ist eher unwichtig, eine gute CPU ist wichtiger.".

Nun gibt es mehr und mehr Anwendungen, die GPU-Unterstützung haben... und laut Werbung ist das natürlich ganz toll und viel besser. Da ich aber nicht gerne auf Werbung vertraue, würde ich es gerne genauer wissen.

Jetzt habe ich mir diesen Thread hier auf cb mal durchgelesen:
https://www.computerbase.de/forum/threads/videos-mit-gpu-unterstuetzung-konvertieren-aber-wie.872185/page-3

Da geht es um das Encoding, bzw. konvertieren mit GPUs. Da sieht man auch, dass es eben doch nicht so einfach ist, wie es einem die Werbung ja gerade auch beim Encoding weis machen möchte.

Mir geht aber eben nicht sosehr ums Encoden, sondern eher um die Arbeit mit Schnitt- und Videobearbeitungsprogrammen. Auch hier ist die Werbetrommel dabei das entsprechend zu vermarkten. Die Frage wäre, was bringts wirklich und was davon schafft welche Grafikkarte?
Beispiele für Programme wären zum Beispiel Premiere CS/Finalcut, After Effects/Motion.

Dazu habe ich folgendes Youtube-Video gesehen, welches Inhaltlich zumindest rein logisch recht überzeugend klingt:
http://www.youtube.com/watch?v=u5oZGk_GhdQ

Nun wieder der Bogen zu der Eingangs erwähnten und sehr oft gelesenen Antwort: "Die GPU spielt eher eine untergeordnete Rolle. Sie sollte nur XY-VRam besitzen..."

Nach dem YT-Video gibt es für mich mind. 2 Abschnitte, die man einzeln berücksichtigen müsste: Einmal die Darstellung der Vorschau in Schnitt- und Bearbeitungsprogrammen, und das Rendering.

Beim Rendering in einen bestimmten Codec könnte ich mir sehr wohl Parallelen zu den Probemen beim Konvertieren im oben genannten Thread vorstellen - kenne mich aber zu wenig aus um das zu bestätigen. Aber da könnte es ebenfalls schwierig sein das Ganze zu parallelisieren.
Andererseits weiß ich auch nicht, wieviel Zeit man sparen kann, wenn bei den einzelnen Frames Shadereffekte u.ä. gut parallelisierbare Prozesse von der GPU machen lässt - oder ob das nur Peanuts sind.

Bei der Vorschau-Darstellung erscheint es mir sehr logisch, dass die GPU da hilfreich sein kann... aber stimmt das auch?

Mich würde das wirklich mal interessieren.
Vielen Dank schonmal ;)
 
Zuletzt bearbeitet:
Hi,
Grafikkarten lohnen sich schon sehr beim Videoschnitt. Allerdings kann ich jetzt nur für Premiere CS5 und neuer sprechen, keine Ahnung wie es bei Final Cut, Avid, Edius, und Konsorten aussieht.
Bei Adobe heißt die GPU-Unterstützung Mercury Playback Engine (MPE). Die hilft bei der Vorschaudarstellung in der Timeline, beim eigentlichen Export kann man sie (hoffentlich?) ausstellen. Das letztendliche Rendern würde ich aber nicht mit Cuda machen lassen, da das merkbare Bildfehler produziert (Beweis).
Geschwindigkeitsvergleiche finden sich in diesen Youtube-Videos:
Für das finale Rendering: http://www.youtube.com/watch?v=4i7-Q50AFqM
Für die Timeline: http://www.youtube.com/watch?v=INXVsMsv8DI (schreckliche Handcam, die Aussage wird aber sehr gut deutlich)
Ansonsten stellt sich noch die Frage, was für eine Grafikkarte. Es gibt (sortiert absteigend nach Nutzen) Quadro, offiziell unterstützte Geforce und manuell freischaltbare Geforce.
 
Hmmm... es ist also wie vermutet. Die Grafikkarte bringt vorallem bei parallelisierbaren Prozessen etwas.

Rendern scheint genau wie im Encoding-Thread besprochen nicht sehr gut parallelisierbar zu sein, sodass hier der Geschwindigkeitszuwachs nur durch geringere Qualität erreicht werden kann. Würde man dieselbe Qualität beim Rendern mit der CPU einstellen, wäre man vermutlich genauso schnell.

Bleibt die Vorschau/Timeline. Hier hat die GPU in den Videos scheinbar Vorteile. Allerdings sind dort auch X Effekte und Videoclips ineinander geschoben. Dabei kann die Grafikkarte ihre vielen Steamprozessoren ausspielen und somit viele Effekt-Einflüsse in Echtzeit anzeigen.

Allerdings scheint es so, als wenn auch hier unter realistischen Bedingungen nicht ansatzweise ausreichend parallelisiert werden kann um die vielen Steamprozessoren zu nutzen (Sieht man daran, dass die Grafikkarten nicht zu 100% ausgelastet werden können).
Das legt dann die Schlussfolgerung nahe, dass eigentlich jede einigermaßen aktuelle Grafikkarte geeignet - bzw. nicht weniger geeignet, als eine teurere - ist! Denn selbst die kleinste Grafikkarte sollte noch zu viele Steamprozessoren haben!?
Bleibt also nur die Frage, ob die Taktraten o.ä. der Grafikkarte noch einen Einfluss haben.
 
Einfluss hat vor allem die Anzahl der Streamprozessoren und der Shader-Takt.

Man sollte aber vielleicht auch zwischen Rendering und Encoding klar unterscheiden - denn das Rendering ist erstmal nur das Berechnen und Ausgeben aller Effekte (ob für die Render-Vorschau in der Videobearbeitungssoftware oder zum nachfolgenden Encoden in einem bestimmten Kompressionsformat - halt für die Ausgabe als Datei - ist dabei in erster Linie unerheblich). Eine Trennung ist deshalb wichtig, weil: beim Rendering kann die GPU durchaus extrem unterstützend sein... beim Encoding hingegen nicht.

Ansonsten kann man schlicht und einfach sagen: die GPU bringt heutzutage durchaus extreme Vorteile bei der Videobearbeitung. Pixelshader sind schließlich ideal dafür geeignet, um Millionen von Pixeln nachträglich zu manipulieren (durch Scharfzeichnen, Weichzeichnen, Farbveränderungen, Verzerrungen, u.ä.) - in Spielen machen sie das schließlich auch ständig. Da ist es nur naheliegend, sie auch bei der Videobearbeitung einzusetzen. Die Liste der in Adobe Premiere CS5 GPU-beschleunigten Effekte zeigt daher auch genau diese typischen Formen der Bildmanipulation (eben: Verzerrungen/Skalierungen, Weich- & Scharfzeichner, Farbkorrekturen, Transparenzeffekte & Co.), für die Pixelshader geradezu prädestiniert sind.
Hinzu kommt der in der GPU verbaute Videocoprozessor, der bei aktuellen GPUs selbständig MPEG2-, MPEG4-ASP- (= XviD/DivX), VC1- und H.264-Videos decodieren kann. Auch der kann genutzt werden, um z.B. ein hochkomprimiertes H.264-Quellvideo in der Videobearbeitungssoftware ohne jegliche CPU-Last in Echtzeit (für die Weiterverarbeitung) zu decodieren. Moderne GPUs unterstützen dabei sogar 4K-Auflösungen.

Im Endeffekt: eine enorme Entlastung der CPU, die sich dann (fast) nur noch auf das Encoding zu konzentrieren braucht (was der Geschwindigkeit logischerweise deutlich zu Gute kommt).

Nur für's Encoding alleine wird eine GPU (bzw.: werden deren Shader-Einheiten) allerdings NIE wirklich geeignet sein - dafür ist der Prozess (wie schon im oben genannten Thread nachzulesen) einfach zu schlecht parallelisierbar. Und es wird in Zukunft voraussichtlich noch "schlimmer", da kommende Kompressionsformate höchstwahrscheinlich noch komplexer sein werden. Aber Videobearbeitung besteht ja üblicherweise nicht nur aus dem Encodingvorgang ;) ...
 
Zuletzt bearbeitet:
Danke, sehr interessanter Beitrag!

Wenn man jetzt einen Computer für Videoschnitt etc. zusammenstellen würde... mit welcher Priorität behandelt man das Thema Grafikkarte nun?
Baut man jetzt quasi Spiele-PCs zur Videobearbeitung?

Dann noch die Frage: CUDA soll wesentlich mächtiger als OpenCL sein - also Nvidia im Moment klar zu empfehlen?

Danke schonmal
 
muzik schrieb:
Wenn man jetzt einen Computer für Videoschnitt etc. zusammenstellen würde... mit welcher Priorität behandelt man das Thema Grafikkarte nun?
Kommt darauf an, was du für Videos bearbeiten willst? Geht es Richtung Bearbeitung von Full-HD-Videomaterial (oder sogar Material mit höherer Auflösung als Full-HD), ist eine leistungsfähige Grafikkarte keinesfalls verkehrt. Gerade dabei ist der Geschwindigkeitsgewinn teilweise enorm. Und tatsächlich sind genau die gleichen Kriterien von Vorteil, die es bei einem High-End-Gaming-PC sind - sprich: viel schnell getaktetes Grafik-RAM, flinke GPU mit möglichst vielen Streamprozessoren bei hohem Shader-Takt, hoher Systembus-Takt, massig Hauptspeicher plus flotte CPU.

muzik schrieb:
Dann noch die Frage: CUDA soll wesentlich mächtiger als OpenCL sein - also Nvidia im Moment klar zu empfehlen?
Für Videobearbeitung zur Zeit wahrscheinlich schon. NVIDIA war halt ziemlich clever: C für CUDA baut als Programmiersprache auf der C/C++ Syntax auf und ist dadurch ziemlich einsteigerfreundlich. Zudem ist NVIDIA gegenüber Entwicklern von CUDA-Software auch von Anfang an extrem hilfsbereit gewesen und geizt nicht mit Tutorials. Außerdem bietet CUDA APIs für (unter anderem) den Zugriff auf diverse Funktionen der GPU an (z.B. die CUDA Video Decoding API - kurz: CUVID - welche den Zugriff auf den in der GPU integrierten Videocoprocessor ermöglicht und somit die Programmierung von CUDA-unterstützten Videodecodern extrem vereinfacht). Dementsprechend gibt es schon diverse Tools im Video(bearbeitungs)bereich, die CUDA für Filteraufgaben oder Decodierung nutzen. Für OpenCL fällt mir spontan nur eins ein...

Allerdings ist nicht gesagt, dass das so bleibt. Und NVIDIA ist sich auch durchaus bewusst, dass sie OpenCL nicht ignorieren können. Denn OpenCL hat vor allem einen bedeutenden Vorteil: es ist ohne größeren Programmieraufwand möglich, OpenCL-Code per GPU oder (falls nicht möglich) per CPU ausführen zu können. Bei CUDA geht das nicht, weshalb ein Programmierer immer alternativen Code integrieren muss, für Systeme ohne CUDA-kompatible Hardware.
 
Zurück
Oben