Grafikkarten Praxis Testberichte

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

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.

Messmethodik und Grundlagen

Dieser Qualitätsvergleich wurde im Rahmen einer Bachelorarbeit unabhängig durchgeführt. Als Datensatz wurden 11 unkomprimierte 1080p Videos von der freien Videothek xiph.org verwendet, ein Mix aus Gameplay-, Render- und Kameraaufnahmen. Die Bildraten variieren zwischen 25 und 60 fps. Als Referenzmetrik wurde Netflix VMAF ausgewählt, eine KI-gestützte Referenzmethode, um subjektive Videoqualität zu ermitteln und vergleichbar zu machen. Die Methode wurde von unabhängigen Instituten untersucht und gilt als eine der derzeit besten.

Die Skala geht von 0 bis 100. Die vollen 100 Punkte entsprechen dem Originalvideo, 80 Punkte einer leichten Beeinträchtigung der Qualität, unter 60 Punkten ist die Qualität kaum noch akzeptabel. Das Testsystem verwendet einen Intel i7-5820K @4,5 GHz, eine NVIDIA RTX 2080 @1860 MHz (Treiberversion 442.19), 32 GB DDR4 @2400 MHz, ein Asus X99-Pro Mainboard, eine 1 TB SATA-SSD und das Corsair AX860 als Netzteil. Die Intel-CPU des Testsystems wird auf 4,5 GHz auf allen Kernen übertaktet, um einen Flaschenhals in Bezug auf Grafikperformance zu minimieren. Moderne Grafikkarten regeln ihre Taktrate und damit die Leistung automatisch hoch, bis eine voreingestellte maximale Temperatur erreicht wird. Um Vergleichbarkeit zwischen Lasttests zu gewährleisten wird die Taktrate der RTX 2080 manuell auf 1860 MHz gesetzt. Bei aufeinanderfolgenden Tests wird abgewartet bis die GPU-Temperatur auf unter 50 °C fällt, ehe der nächste Test gestartet wird. 

Abbildung 1: NVIDIA Turing GPU-Familie Quelle: https://developer.nvidia.com/nvidia-video-codec-sdk

Wie in Abbildung 1 zu sehen, soll die physische Auslagerung des Encoders dafür sorgen, dass andere Aufgaben, die auf der GPU ausgeführt werden, in der Performance nicht beeinträchtigt werden. Beim softwarebasierten x264-Encoding wird die CPU stark belastet, wodurch weniger CPU-Rechenzeit für andere Anwendungen zur Verfügung steht. Bei hardwarebasiertem Encoding wird die CPU nicht mit der rechenintensiven Aufgabe des Encoding belastet, so seien etwa in Computerspielen höhere Frameraten und damit ein besseres Spielerlebnis sowie bessere Streaming- Performance möglich (Abbildung 2).

Abbildung 2 Nvidia NVENC vs x264 average FPS Quelle: https://obsproject.com/forum/resources/nvidia-nvenc-guide.740/

Die Zahlen von Nvidia bezüglich Videoqualität gilt es jedoch mit Vorsicht zu genießen, da die verwendete PSNR-Metrik wenig über die wahrgenommene Videoqualität aussagt, sondern lediglich den Signal-Rausch-Abstand misst. Die unkomprimierten Referenzvideos wurden zunächst mit dem freien Encoder HandBrake konvertiert. Oft wird für das Livestreaming ein Encoder-Programm wie OBS verwendet. Mit OBS ist jedoch im Nachhinein kein framegenauer Vergleich mit der unkomprimierten Referenzdatei möglich.

Ein solcher Vergleich ist Voraussetzung für VMAF-Berechnungen, deshalb werden die Quellvideos mit HandBrake umgewandelt, was gleichzeitig eventuelle Performanceprobleme des Testsystems eliminiert, da die Videos anders als beim Livestreaming nicht in Echtzeit umgewandelt werden müssen. Die Einstellungen entsprechen den Empfehlungen von Twitch und YouTube Live (H.264, 1080p 60 FPS, 6 Mbit)

Videoencoder

H.264 (x264)

Bildfrequenz

Same as source; Konstante Bildfrequenz

Voreinstellung

Veryfast; faster; fast; medium

Mittlere Bitrate (kbps)

6000

Abstimmung

None

Profil

High

Level

Auto

Zusätzliche Parameter

nal-hrd=cbr:bitrate=6000:vbv-bufsize=6000:vbv-maxrate=6000:qcomp=0.0:keyint=120:bframes=2

Werbung

Werbung