Reviews NVIDIA NvEnc vs. CPU-Encoding: Kann der Video-Encoder der Turing-Chips für Twitch-Streaming & Co. mit einer CPU mithalten? Analyse mit Netflix VMAF

Igor Wallossek

Format©
Mitarbeiter
Mitglied seit
Jun 1, 2018
Beiträge
10.107
Bewertungspunkte
18.596
Punkte
114
Alter
59
Standort
Labor
Schon seit geraumer Zeit findet sich in vielen NVIDIA-Grafikkarten ein separater Encoding-Chip, den Nvidia NvEnc getauft hat. Dabei handelt es sich um eine echte Hardware-Lösung, die Videos recht effizient konvertieren kann. Unterstützt werden aktuell die gängigen Codecs H.264 und H.265, sowie Auflösungen bis zu 8K. Die Turing-Generation verspricht mittlerweile eine dem klassischen CPU-Encoding überlegene Videoqualität bei weniger Systemlast. Gerade für Livestreamer mit hohen Qualitätsansprüchen war bislang die einzige Option, auf eine teure CPU mit vielen Kernen von Kaliber eines Intel i9 oder Ryzen 9 3900x zurückzugreifen.

Denn gängige 4- und 6-Kerner stoßen beim reinen CPU-Encoding (x264) sehr schnell an ihre Leistungsgrenzen, erst Recht dann, wenn auch noch ein aufwändiges Spiel gleichzeitig laufen soll. Der NvEnc der Turing-Generation wird auf den Consumer-orientierten GeForce-Grafikkarten GTX 1660, 1660 Ti, den RTX 2060 (Super), 2070 (Super), 2080 (Super), 2080 Ti sowie der Titan RTX unterstützt. Folgende auf den professionellen Markt ausgerichteten QUADRO und TESLA-Produkte bieten ebenfalls Turing-NVENC Unterstützung: Quadro T1000, T2000, Quadro RTX 3000, 4000, 5000, 6000, 8000 und Tesla T4....



>>> Hier den gesamten Testbericht lesen <<<
 
Wo steht denn erklärt, was Bild A und Bild B ist? Irgendwie habe ich das nicht gefunden...
 
Auf Seite 2 oben steht:
Die Voreinstellungen (Presets) haben den größten Einfluss auf die resultierende Bildqualität, allerdings steigt mit höheren Presets auch die Rechenzeit enorm an. Ausgehend von medium beträgt die Rechenzeit bei slow 40 %, bei slower 100 % und bei veryslow 280 % mehr. Selbst H.264 medium in Echtzeit ist für die meisten modernen Prozessoren zu viel des Guten. A ist auf den nachfolgenden Screenshots NvEnc, B ist x264 medium.
Das bedeutet doch, dass es Unterschiede in der Gesamtdauer gibt. Frage also: wo sind die Rechenzeiten?
 
Die Rechenzeiten sind extrem CPU-abhängig und damit kaum relevant, da sowieso immer länger als mit NvEnc, selbst mit dem Threadripper 3970X.

Es geht im Artikel ausschließlich um die Qualitätsvergleiche, nicht um Rechenzeiten, die von CPU zu CPU und Setting extrem stark variieren und somit eh kaum reproduzierbar wären.. Die Encodierungs-Ergebnisse sind hingegen CPU-unabhängig. Und genau das war ja der Inhalt der Untersuchung.
 
Die Encodierungsergebnisse sind hingegen CPU-unabhängig? Öööh *kopfkratz*?
Wurden die Ergebnisse von medium bis very fast nicht von der CPU berechnet?
Wo bieg ich gedanklich grade falsch ab?
 
Fazit, wenn man schon für die H264 Lizenz mitzahlt, kann mans auch nutzen? :)
 
Ungeachtet der Zahlen ist die subjektive Qualität bei x264 mMn besser als bei NvEnc, schön zu sehen z.B. an den Bäumen bei crowd_run
 
Ungeachtet der Zahlen ist die subjektive Qualität bei x264 mMn besser als bei NvEnc, schön zu sehen z.B. an den Bäumen bei crowd_run
Das lustige ist, wir haben das auch mal verglichen und so festgestellt. Im Twitch-Stream wiederum war die Subjektiv wargenommene Qualität bei NVENC wieder besser. Vor allem, wenn viel schnelle Bewegung dabei ist, ob das an der Twitch-Komprimierung oder Bitrate liegt, kann ich nicht sagen
 
Deshalb hat er ja so viele verschiedene Beispiele verwendet :)
 
Ich meine vor einiger Zeit einen Performancevergleich gelesen zu haben, bei dem die NvEnc Encodes zwar schneller und qualitativ ähnlich waren, aber dafür war die entstandene Datei um einiges größer als bei H264 medium.
 
Alexander, danke für den Vergleich von NVENC zu CPU! Wenn Deine Bachelorarbeit zum Download verfügbar ist, würde ich sie gerne lesen.
Ein Kommentar, zwei Fragen: Einer der Gründe, warum NVIDIA einen NVENC ASIC in ihre Karten einbauen, ist doch auch, damit man Videos live und ohne CUDA encodieren kann; Turing's NVENC ist um einiges besser (Qualität) als frühere Versionen. Haben Quadros nicht sogar 2 NVENC Engines? Wäre interessant, ob das noch bessere Livestreams ergeben kann (Igor, Du hast doch ein oder zwei Quadros in Deinem Testrigg)?
Und jetzt, überreife Tomaten bereitlegen: wie ist denn die Qualität von Lifestream mit NVENC im Vergleich mit einem Lifestream von einem Oberklasse Smartphone, also z.B. iPhone 11 oder Android mit Qualcomm's 865? Die SoCs haben ja auch encoding ASICs integriert, so daß die Rechenleistung nicht direkt in die Videoverarbeitung eingeht. Würde mich einfach Mal interessieren.
 
Die Quadros sind keine anderen Chips, es gibt genau eine Engine. Mir ist bisher zumindest nichts Gegenteiliges aufgefallen. RTX 6000 und Titan RTX encodieren in etwas gleich schnell.
 
Die Quadros sind keine anderen Chips, es gibt genau eine Engine. Mir ist bisher zumindest nichts Gegenteiliges aufgefallen. RTX 6000 und Titan RTX encodieren in etwas gleich schnell.
Vielleicht bring ich da etwas durcheinander, aber Quadros können mehrere Streams gleichzeitig enkodieren, während "consumer grade" NVIDIA Karten nur ein Stream pro Zeit schaffen. Jedenfalls laut NVIDIAs Webseite. Ich habe selbst keine Quadro, und kann das daher nicht direkt nachprüfen.
 
Es wird Zeit dass AMD mit RDNA 2 neben der Raytracing Unterstützung auch hardwareseitig ( VCE ASIC ) etwas neues veröffentlicht und alle überrascht ;)
 
Bisserl viel was AMD alles mit der nächsten Gen schaffen soll/muss? ;)
 
Huch, gerade das Forum hier entdeckt und erstmal registriert nachdem es so viel Feedback zu meinen Ergebnissen gibt :)

@Derfnam Meine Forschung zielt vor allem auf Livestreaming ab, hier muss die CPU das Encoding in Echtzeit oder schneller schaffen. Je nachdem wie komplex das Videosignal ist variiert die Rechenzeit beim Encoding sehr. Die gängigen 4 und 6 Kerner schaffen nur die unteren Qualitätspresets also veryfast und faster in Echtzeit. High End wie Ryzen 3700x dürfte schon die Stufe "fast" schaffen und 3900x schafft medium in Echtzeit, kostet aber auch entsprechend. Die Essenz der Ergebnisse ist, dass der Nvidia-Encoder eine bessere Qualität bei ansonsten gleichen Bedingungen schafft als die CPU und dabei die Systemperformance kaum beeinträchtigt während die CPU bei schlechterer Qualität schon komplett am Anschlag ist.

@Capsaicin Ja bei Laub und Gras macht x264 einen deutlich besseren Job. Interessant zu sehen wie der NVENC Algorythmus den Fokus auf Menschen bei crowd_run legt oder bei der Parkszene auch.

@Yuno Dann war der Vergleich aber unfair. Man muss schon gleiche Bitraten verwenden wenn man verschiedene Codecs vergleicht und bei gleicher Bitrate und Dauer ist die Dateigröße natürlich nahezu identisch. Aus zwei Äpfeln kann ich selbst mit der tollsten Saftpresse niht mehr rausholen als aus 4 Äpfeln und einer schlechteren Presse. Mehr Datenmenge = geringere Kompression = mehr Qualität bleibt übrig. Grundsätzlich performen Hardware-Encoder be höheren Bitraten besser aber ich wollte Äpfel mit Äpfeln vergleichen und das höchste was Twitch momentan erlaubt sind 6 Mbit. Vergleich mit z.B. 20 Mbit wäre durchaus noch interessant.

@eastcoast_pete die Arbeit habe ich nicht publizieren lassen, vielleicht lade ich sie aber zum Download hoch. Alle wichtigen Ergebnisse sind im Artikel enthalten. Aktueller Turing-NVENC ist in der Tat ein riesen-Qualitätssprung zur 10er Generation. AMDs VCE Lösung kommt von der Qualität gerade mal an das alte NVENC bzw. H.264 veryfast ran . Manche Nvidia Karten können mehrere gleichzeitig enkodieren, das kannst du dieser Tabelle entnehmen, allerdings ist die Qualität gleich, ob man 1 oder 2 Streams encodiert. https://developer.nvidia.com/video-encode-decode-gpu-support-matrix
Mit den ASICs der mobilen ARM-CPUs kenne ich mich leider nicht aus und kann dazu nichts sagen. Ich weiß nur, dass Intel Quicksync bei relativ kleinen Bitraten qualitativ genauso wenig wie AMD VCE taugt.

Und ja, AMD steht bezüglich Hardware-Encoder mittlerweile wirklich unter Zugzwang. Immer mehr Leute streamen auf Twitch / YouTube und dafür ist ne RTX Karte mangels Konkurrenz zurzeit ein absoluter no-Brainer. Premiere Pro kann seit neuestem auch NVENC beim Exportieren verwenden.Kommt der bessere Support von Profi-Software (CUDA) noch dazu.

In dem Sinne, nochmal vielen Dank an @Igor Wallossek für das Angebot einen Artikel für igorslab zu schreiben. Freut mich wirklich dass es Interesse an den Ergebnissen gibt.
 
Zuletzt bearbeitet :
Tjo, wir sind schon ein seltsamer Haufen hier... ;)

Jedenfalls willkommen im Forum! :D
 
Oben Unten