Unsicherheit im Bezug auf Levels und H.264

  • Hallo zusammen, mir ist da gerade eine Kleinigkeit bei den Level-Specs von H.264 aufgefallen:

    Ich kodiere normalerweise mit Level 4.1, was aber anscheinend nur Frameraten von bis zu 30 Bildern/Sekunde erlaubt. Wie verhält sich das dann mit Interlaced-Material, welches dann ja im Grunde 50 - 60 Bilder pro Sekunde aufweisen - auch wenn es sich dabei natürlich um Halbbilder handelt.

    Daher die Frage: Ist hier Level 4.2 sinnvoller oder werden die beiden Halbbilder im Prinzip als ein Bild gewertet und Level 4.1 reicht vollkommen aus?

    Besten dank


    Lapje

  • Vermute Dir ist noch nicht so ganz klar wie das mit den Leveln&Co wirklich funktioniert. :D

    Zitat

    was aber anscheinend nur Frameraten von bis zu 30 Bildern/Sekunde erlaubt.


    Zur generellen Klärung: Level beschränken die Anzahl der Markoblöcke pro Sekunde (nicht nur die Auflösung oder nur die Bildrate), d.h. zu sagen das Level X die Bildrate auf maximal Y beschränkt ohne eine Auflösung mit zu liefern ist einfach Unfug.

    Zitat

    Wie verhält sich das dann mit Interlaced-Material, welches dann ja im Grunde 50 - 60 Bilder pro Sekunde aufweisen - auch wenn es sich dabei natürlich um Halbbilder handelt.


    Genau Halbbilder sind keine ganzen Bilder, sondern eben nur halbe. Halbe Bilder haben entsprechend weniger Makroblöcke.

    Auch sei angemerkt, dass die maximale Auflösung nicht durch eine bestimmte Breite oder Höhe sondern durch die Anzahl der Makroblöcke eingeschränkt ist!
    Level 4.1 erlaubt maximal 8,192 Makroblöcke, d.h. wenn das Material nur 16 Pixel (= 1 Makroblock) hoch ist, darf es maximal 8192 Makroblöcke (= 8192*16 = 131072 Pixel) breit sein.
    Ist der Material 18 Pixel (also 2 Makroblöcke, da 1*16 < 18 < 2*16) hoch, darf es nur maximal 8192/2= 4096 Markoblöcke (= 4096*16 = 65536 Pixel) breit sein.

    -> Hoffe dieser Kommentar hilft etwas zum Verständnis.

    Zur Frage ob Level 4.1 ausreicht oder ob 4.2 sinniger ist. Vermute ich stark, dass Level 4.1 schon höher ist als Du es eigentlich brauchst.

    Cu Selur

  • OK, ich war anscheinend so naiv zu denken, dass eine Tabelle in einem Wikipedia-Artikel einfach zu verstehen wäre.^^

    http://de.wikipedia.org/wiki/H.264#Level

    Ich dachte der Zahlenwert hinter dem Schrägstrich wäre die mögliche Framerate. Und da war ich etwas irritiert und in Sorge, dass meine bisherigen Kodierungen doch nicht so gut waren..

    Danke für die Aufklärung!

    Aber welchen "Nachteil" hat ein zu hoher Level als nötig? Höhere Dateigröße? Größerer Aufwand beim Dekodieren?

  • Ich dachte der Zahlenwert hinter dem Schrägstrich wäre die mögliche Framerate.


    Das stimmt auch. Selur hat ja beschrieben, wie sich das berechnet. 1080p mit 50 oder 60 Hz sind also tatsächlich nicht möglich mit Level 4.1. Mit Interlaced ist es aber erlaubt, da zwei Felder nur als ein Frame gezählt werden.

    Aber welchen "Nachteil" hat ein zu hoher Level als nötig? Höhere Dateigröße? Größerer Aufwand beim Dekodieren?


    Wenn man einen zu hohen Level setzt, kann es sein, daß einige Player die Streams sofort ablehnen. Insbesondere 4.1 ist häufig das Maximum. Letztendlich werden mit dem Level aber nur die maximalen Werte für - unter anderem - Bitrate/Makroblockrate festgelegt, d.h. nur weil man Level 4.2 anstatt Level 4.1 setzt, heißt es nicht, daß der Stream nun tatsächlich aufwendiger zu decodieren wäre, da Level 4.1 eine Teilmenge von Level 4.2 ist.

  • OK...soweit jetzt klar...hoffe ich...

    dann hätte ich aber einfach noch eine Frage zunm Verständnis: Was wäre wenn ich ein 1080i-Video mit TGMC deinterlacen würde? Bei Original-Einstellungen habe ich dann ja, wenn ich das richtig in Erinnerung habe, eine doppelte Framerate, also aus 50 Halbbildern werden 50 Vollbilder...Wie verhält es sich da? Level 4.1 würde da doch nicht mehr ausreichen, oder?

    Oder habe ich da auch was falsch verstanden? ^^

  • Zitat

    Wie verhält es sich da? Level 4.1 würde da doch nicht mehr ausreichen, oder?


    Ja.
    Dein Bild besteht aus 1920*1080 Bildpunkten.
    1920 besteht aus 120 Makroblöcken, 1080 besteht aus 68 Makroblöcken.
    Ein einzelnes Bild besteht also aus 120*68 = 8160 Makroblöcken.
    Du hast 50 Bilder pro Sekunde.
    Das mach dann also 8160*50 = 408 000 Makroblöcke pro Sekunde.
    Level 4.1 erlaubt bis zu 245 760 Makroblöcke pro Sekunde, 245 760 < 408 000, d.h. Level 4.1 würde nicht reichen.

    Cu Selur

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!