Ist Hardware Video Decoding nur ein Hoax?

Klamann

Lieutenant
Registriert
Nov. 2006
BeitrÀge
967
Auf so einen Titel kann nur ein Rant folgen; ich hoffe, danach könnt ihr mir helfen 😄

Ich versuche seit einer Weile, mir einen sparsamen HTPC zusammenzustellen und habe immer das gleiche Problem: 4K content wird nicht flĂŒssig abgespielt. Es gibt immer wieder kleine Ruckler, je nach Setup mal mehr und mal weniger. Das betrifft sĂ€mtliche Hardware, die ich bisher getestet habe, die auf Hardware-Beschleunigung angewiesen ist, weil die CPU sonst zu schwach wĂ€re. Also z.B. ein Raspi 4, ein Intel NUC 11 mit Celeron CPU, selbst mein Hisense Smart TV packt das nicht immer. Je nach System und Video sind es mal einzelne Frames, die ausgelassen werden, bis zu mehreren Rucklern pro Sekunde. Jedenfalls ist es auffĂ€llig, und so macht 4K content keinen Spaß.

Um zu meinem provokativen Titel zurĂŒck zu kommen: NatĂŒrlich habe ich Systeme gesehen, auf denen Hardware Decoding funktioniert. Auf meinem Desktop habe ich einen alten Xeon E3-1230 v3 und eine GTX 1060. Die GPU kann VP9 10bit content nicht in hardware decodieren, aber die CPU ĂŒbernimmt das einfach (40-60% load bei 80W TDP). Die GPU kann aber HEVC 10 bit decodieren, und das macht die GPU auch ohne einen einzigen Ruckler und ohne die CPU zu belasten.

Warum funktioniert der Hardware Decoder ohne Zicken zu machen auf dem Desktop-System (das mehr als genug Power hat, um Videos in Software zu rendern)? Aber auf den Systemen, die nicht genug CPU-Leistung haben, bei denen ich wirklich darauf angewiesen bin, da gibt es Probleme?
Hatte ich einfach nur Pech mit meinen 3 Systemen (Raspi 4, Intel NUC 11, Hisense TV), oder kann hier jemand berichten, dass flĂŒssige 4K Wiedergabe ohne frame drops mit vergleichbarer Hardware möglich ist?
 
Also ein Pi4 ist definitiv zu schwach fĂŒr 4K, 1080p ohne Probleme

Vermutlich hat der Celeron ebenfalls zu wenig Power

Ich hab einen Nuc8 mit i3 8.Gen, zusammen mit Kodi und Dateien auf meinen TrueNAS System absolut kein Problem, 4K mit voller Bitrate 60-100Mbit/s, dazu DTS:X oder Atmos (falls verfĂŒgbar) ohne Probleme, ach ja, HDR natĂŒrlich auch
 
Ich denke nicht das die CPU-Leistung der störende Faktor ist. Eher die Synchronisation der BildflÀche mit der Ausgabe.
DerFakeAccount schrieb:
Also ein Pi4 ist definitiv zu schwach fĂŒr 4K
Nein.
DerFakeAccount schrieb:
Vermutlich hat der Celeron ebenfalls zu wenig Power
Nein.

Das sind beides Pauschalaussagen ohne fundierten Hintergrund.
 
  • GefĂ€llt mir
Reaktionen: Project 2501, Conqi, Mr.Zweig und eine weitere Person
ruckler können auftreten wenn die die bildrate des videos nicht der des displays entspricht (bzw. kein vielfaches davon ist). dann hat man keine dropped frames, aber es ruckelt trotzdem. ausserdem können auch hardware-decoder in der maximalen bitrate limitiert sein (das sind dann auch richtige drops).
 
  • GefĂ€llt mir
Reaktionen: inge70 und ghecko
Nur um sicher zu gehen: Wenn du vom HTPC an den TV gehst, welche Bildqiederholrate ist dann eingestellt?

Wenn du z.B. mit 60 Hz ausgibst und das Video z.B. 24 FPS hat, dann hast du zwangslÀufig ruckler.

Manche TVs, können das zwar erkennen und stellen das Video dann ruckelfrei dar, andere TVs können das Ruckeln aber sogar z.B. durch eine aktivierte Zwischenbildberechnung sogar noch verstÀrken.

Optimal wÀre also, dass die Bildwiederholrate per HDMI exakt der Videoframerate entspricht. Tools wie Kodi können die HDMI Frequenz nach bedarf umstellen und ans Video anpassen.


Das ist ĂŒbrigens eines von vielen Problemen, weshalb ich persönlich nicht auf HTPCs setzen wĂŒrde, sondern wann immer möglich die Smart TV Apps vorziehe oder zumindest fĂŒr die Lokale Filmsamlung auf Zuspieler wie Nvidia Shield oder Apple TV setzen wĂŒrde. Gerade was solche "kleinigkeiten" angeht, sind PCs oder Selbstbaulösungen extrem nervig.
 
  • GefĂ€llt mir
Reaktionen: NaturtrĂŒb, Conqi, GTrash81 und 2 andere
Ganz kurze Version: Hardware Decoding bedeutet ja nicht, dass noch so schwache Hardware plötzlich ein Bauteil hat, was JEDEN Inhalt mit dem entsprechenden Codec komplett ohne Leistungs- oder QualitĂ€tsverlust en- oder dekodieren kann. Hardware De- und Encoder sind nicht alle gleich und können schnell ĂŒberfordert werden, wenn Bitrate, Framerate, Auflösung, Farbtiefe und Natur des Videos (sehr aufwĂ€ndig komprimierte Videos z.B.) zu viel werden.
 
  • GefĂ€llt mir
Reaktionen: Project 2501
Selbst mit Hardware decoding hÀngt viel von der Software ab die das macht (Video Player, Browser?).
Auch werden gerne noch weitere Verbesserungen auf das Bild angewandt (eine davon wÀre zB das konvertieren zwischen verschiedenen Framerates oder das skalieren der Auflösung). Das alles ist dann nicht mehr auf der eigentlichen Decoder Hardware, sondern allgemein auf der GPU und kann dort gut Rechenleistung verbrauchen.

Desktop Programme sind leider viel zu oft nicht auf das Sparen von Rechenleistung oder Energie optimiert und machen dann vllt Dinge die so ein Celeron dann nicht mehr hinbekommt.
 
Zuletzt bearbeitet:
Gibt so viele andere Faktoren...
4K Videomaterial von der Canon R5 kann ich nicht abspielen. Ist zwar HEVC, jedoch in so einer Farbuntertastung (4:2:2), die Nvidia (3090) nicht unterstĂŒtzt. Also bleibt die CPU. Meine 7960X CPU schaffts nicht (16 Kerne), geht auf 100%.
Also hÀngt von dem Material ab. Dann ob Dein Netzwerk schnell genug ist usw.
Zudem trotz HW Decoding die CPU auch irgendwas machen muss, wie Daten bereitstellen, Untertitel oder sonstwas. Wenn ein Kern fĂŒr eine Aufgabe verantwortlich ist, diese nicht auf mehrere Kerne verteilt werden kann und der Kern der CPU bei 100% lĂ€uft kommt es zu Aussetzer.
 
  • GefĂ€llt mir
Reaktionen: Project 2501 und GTrash81
@Prollpower

Hast du die "Filme & TV" App von Windows 10/11 schonmal probiert? Also der Standard Videoplayer von Windows?
Die ist was HardwaredecodingkompatibilitĂ€t und Performance angeht ungeschlagen. Damit konnte ich auf meiner alten GTX980 sogar Formate ruckelfrei abspielen, die die Karte gar nicht unterstĂŒtzt hat, selbst mit 100mbps lief das noch flĂŒssig. GPU Decoding war laut Taskmanager trotzdem aktiv, die CPU hat aber stark mitgeholfen.
Was auch immer Microsoft da treibt, es ist ziemlich gut.
 
Ich wĂŒrde ja auch Shield sagen, aber auch die ruckelt ab und zu mal.
 
Hardware Decoding ist, nach meinem Kenntnisstand, stark von Lizenzen abhÀngig.

So konnte der RPi3 ja MPEG-4 und H.264, sowie ĂŒber optionale Lizenzen MPEG-2 und VC1.
Der RPi4 wurde dahingend "degradiert", weil er von oben genannten nur noch H.264 konnte, zuzĂŒglich H.265.

Beim RPi4 muss man fĂŒr das Hardware Decoding unter UmstĂ€nden etwas an der config.txt Ă€ndern, damit es auch wirklich ĂŒber die Hardware dekodiert.
 
DerFakeAccount schrieb:
Vermutlich hat der Celeron ebenfalls zu wenig Power
FĂŒr Software rendering definitiv. Bei Wiedergabe mit aktivem Hardware Decoding lag die CPU-Last auf dem Celeron N5105 (4C/4T) nie ĂŒber 10%.
0x8100 schrieb:
ruckler können auftreten wenn die die bildrate des videos nicht der des displays entspricht (bzw. kein vielfaches davon ist). dann hat man keine dropped frames, aber es ruckelt trotzdem. ausserdem können auch hardware-decoder in der maximalen bitrate limitiert sein (das sind dann auch richtige drops).
Der Fernseher ist mit 3840x2160@60Hz angeschlossen. Die Probleme mit 24Hz Material kenne ich, aber das meine ich hier nicht. Auch wenn ich 60Hz Material abspiele, gibt es einzelne frame drops oder das Video stoppt einfach mal fĂŒr 100ms und springt dann weiter. Ist auch im VLC unter Statistiken auslesbar (Video -> Verloren -> mehr als 0 Bilder)
W0dan schrieb:
Das ist ĂŒbrigens eines von vielen Problemen, weshalb ich persönlich nicht auf HTPCs setzen wĂŒrde, sondern wann immer möglich die Smart TV Apps vorziehe oder zumindest fĂŒr die Lokale Filmsamlung auf Zuspieler wie Nvidia Shield oder Apple TV setzen wĂŒrde. Gerade was solche "kleinigkeiten" angeht, sind PCs oder Selbstbaulösungen extrem nervig.
Wenn es nur die 24Hz Ruckler auf einem 60Hz Display wĂ€ren, ließe sich das easy lösen. Das Problem ist leider grĂ¶ĂŸer als das :/
DER DOHR schrieb:
Ganz kurze Version: Hardware Decoding bedeutet ja nicht, dass noch so schwache Hardware plötzlich ein Bauteil hat, was JEDEN Inhalt mit dem entsprechenden Codec komplett ohne Leistungs- oder QualitĂ€tsverlust en- oder dekodieren kann. Hardware De- und Encoder sind nicht alle gleich und können schnell ĂŒberfordert werden, wenn Bitrate, Framerate, Auflösung, Farbtiefe und Natur des Videos (sehr aufwĂ€ndig komprimierte Videos z.B.) zu viel werden.
Ich habe mir einen Testparcour mit verschiedenen Formaten, Bitraten, Bildfrequenzen etc. gebaut, und habe leider kein einziges 4K video, bei dem es absolut flĂŒssig lĂ€uft. Auf meinem Referenzsystem schon, aber nicht auf dem Fernseher oder NUC. Bei Interesse kann ich den Testparcour sharen.
Ray519 schrieb:
Selbst mit Hardware decoding hÀngt viel von der Software ab die das macht (Video Player, Browser?).
Ich habe lokale Videos mit dem aktuellen VLC Player (64 bit) getestet, und Streams ĂŒber YouTube mit Firefox und Chrome. Als Betriebssystem hatte ich Windows 10 und Ubuntu 22.04 im Einsatz. Die Probleme waren ĂŒberall vergleichbar, außer YouTube auf Ubuntu, das war eine Katastrophe.
 
Von VLC hĂ€tte ich jetzt auch keine effiziente Verarbeitung erwartet. Beste Chancen hast du mit den Board-Tools die am ehesten auf die Treiber und das OS abgestimmt sind. Also Windows Video Player (dann natĂŒrlich nur mit Formaten die der mag) und Edge.

Gerade auf der CPU können halt gut einzelne Dinge limitieren ohne dass du gleich 100% Auslastung siehst. Wenn die CPU so langsam ist, dass sie nur Knapp die notwendigen Daten beischaffen kann (oder was auch immer), dann können schon geringe Verzögerungen dazu fĂŒhren, dass ein Frame nicht mehr rechtzeitig fertig wird.

UHD bleibt halt eine Menge an Daten, besonders nach dem dekomprimieren...
 
  • GefĂ€llt mir
Reaktionen: Project 2501
Aus den BeitrÀgen bisher lese ich heraus, dass der decoder sehr wohl in der Lage sein sollte, das Material abzuspielen, aber es muss an einer anderen Stelle in der Kette ein Problem geben: CPU kann nicht schnell genug Daten liefern, Verbindung zum AnzeigegerÀt ist nicht optimal, verwendete Software ist Mist, etc.

Ich bin noch nicht ĂŒberzeugt, aber wĂŒrde gerne mal mit der Theorie arbeiten und versuchen, Probleme auszuschließen
  • CPU: wenn irgendwann die Last auf 25% steigt, könnte ich bei einem 4-Kerner ein Problem haben, falls es da einen Prozess gibt, der nur auf einem Core lĂ€uft. Bisher habe ich so etwas nicht beobachtet. Gibt es andere Möglichkeiten, wie ich das testen kann?
  • Verbindung zum Fernseher: 3840x2160@60Hz ĂŒber HDMI. Lasst uns erstmal auf 60Hz content konzentrieren. Gibt es irgend etwas, das ich hier anders machen sollte?
  • Software: Playback mit VLC funktioniert auf meinem Referenzsystem hervorragend, aber auch das können wir prĂŒfen. Ich werde mal den Standard Windows Player und Edge probieren, wie von @W0dan und @Ray519 vorgeschlagen.
 
Klamann schrieb:
YouTube auf Ubuntu, das war eine Katastrophe.
unter linux musst du im firefox schauen, dass das hardware-decoding auch eingeschaltet ist. ist per default immer noch aus:

1659778577342.png


ausserdem solltest du mal schauen, ob vaapi richtig funkioniert:
Code:
$ vainfo
libva info: VA-API version 1.14.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_14
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.14 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 22.3.1 ()
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :    VAEntrypointVLD
      VAProfileMPEG2Main              :    VAEntrypointVLD
      VAProfileH264Main               :    VAEntrypointVLD
      VAProfileH264Main               :    VAEntrypointEncSliceLP
      VAProfileH264High               :    VAEntrypointVLD
      VAProfileH264High               :    VAEntrypointEncSliceLP
      VAProfileJPEGBaseline           :    VAEntrypointVLD
      VAProfileJPEGBaseline           :    VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline:    VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:    VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          :    VAEntrypointVLD
      VAProfileHEVCMain               :    VAEntrypointVLD
      VAProfileHEVCMain10             :    VAEntrypointVLD
      VAProfileVP9Profile0            :    VAEntrypointVLD
      VAProfileVP9Profile2            :    VAEntrypointVLD

damit ist ein 4k60 (vp9) video auf youtube auf meinem laptop mit einem i5-8265u ohne probleme bei sehr geringer cpu-last möglich.

ansonsten wĂŒrde ich eher mpv anstatt vlc benutzen. auch hier darauf achten, dass hw-dec auch aktiv ist:

Code:
$ cat ~/.config/mpv/mpv.conf
hwdec=auto-copy
hwdec-codecs=all
 
Zuletzt bearbeitet:
  • GefĂ€llt mir
Reaktionen: ghecko und Alexander2
Das erste was du checken solltest ist was sollte der Decoder ĂŒberhaupt decodieren können und was fĂŒr Material hast du :-)
Deinen Schluss (erster Absatz in deinem #16 teile ich nciht als Fazit :-)

Edit:
Youtube alleine hat oft mehrere verschiedene Formate pro Video, es gibt Tools um sich bestimmte Versionen davon laden zu lassen insofern verfĂŒgbar.

Edit:
Sobald es um Linux geht und Hardwaredecoding musst du basteln, das ist immer wieder eine Baustelle. da auf eine CPU zu setzen, die das Video im Zweifel nicht per Software decodieren kann halte ich fĂŒr eine schlechte Idee :D
 
@0x8100 danke fĂŒr den Beitrag, du hast dich wohl mal durch den gleichen Dschungel gekĂ€mpft wie ich. Mit den VAAPI settings habe ich hardware decoding in Firefox tatsĂ€chlich zum laufen gebracht, die Ergebnisse waren aber ernĂŒchternd. Hier sind meine Notizen:
local files (vlc)

  • HEVC 4K@24Hz@10bit: serious stuttering
  • HEVC 4K@60Hz@10bit: serious stuttering
  • VP9 4K@24Hz@10bit: serious stuttering
  • VP9 4K@60Hz@10bit: occasional frame drops

youtube (firefox)

  • VP9 1440p@24Hz: serious stuttering
  • VP9 1440p@60Hz: some stuttering
  • VP9 2160p@24Hz: serious stuttering
  • VP9 2160p@60Hz: some stuttering

youtube (chrome)

was unable to enable hardware accelleration, software playback can't handle the load

MPV habe ich auch probiert, da war die performance sehr Àhnlich zu meinen Ergebnissen mit VLC. Ich kann es nochmal mit deiner mpv.conf probieren.
 
Ich kann nicht garantieren, dass der Celeron das grundsÀtzlich ruckelfrei können sollte, aber ich vermute, dass Intel einen HW-Decoder der UHD@60 annimmt nur verbaut / aktiviert lÀsst, wenn sie wissen, dass es auch geht.
Mit mindestens einer Encoding Config. Es gibt ja viele verschiedene Einstellungen beim Encodieren. Da gibt es durchaus Optionen die es fĂŒr so einen Hardwaredecoder schwerer machen und eine Kombination aus solchen Einstellungen, die den Decoder dann in Summe vllt ĂŒberlasten.

Aber Treiber oder HW könnten auch ein Problem sein. So konnte meine 3090 beispielsweise nicht Youtube's AV1 8K Material ruckelfrei abspielen (mit HW Decoding). Die Alder Lake iGPU konnt es aber...
 
ZurĂŒck
Oben