H264 - Level auslesen

  • Bei x264 Streams werden die Settings gespeichert, die könnte man mit z.B. avinaptic auslesen. Prinzipiell ist auch http://www.h264visa.daydayup.info wobei auch das soweit ich weiß auch nicht die Level Infos ausspuckt.
    (Eventuell findet mana uch was mit mp4box bzw. mp4ui)

    Um die Level&Profile Infos anzugeben, müsste man:
    1. den Stream analysieren
    2. die ermittelten Daten gegen http://de.wikipedia.org/wiki/H.264 matchen um zu gucken welches Profil mindestens nötig wäre

    Soweit mir bekannt existiert bis dato kein Tool was dies macht.

    Cu Selur

  • AVINaptic ist mir bekannt, reicht aber nicht. Ebensowenig die anderen genannten Tools.

    Profil auszulesen und zuzuordnen ist kein Problem.
    H264parse spuckt Werte für profile_idc aus, die man direkt zuordnen kann.
    Für den level_idc ist das allerdings nicht so einfach. Ist dir oder jemand anderem evtl. ein table bekannt wo ein level_idc einer entsprechenden Leveltiefe direkt zugeordnet werden kann?

    Falls nicht:
    Wie kann ich denn anhand der x264-Optionen erkennen welches Level das ist?

    Laut der Wiki-Tabelle brauche ich:
    Max Macroblöcke / Sekunde
    Max Bildgröße (in Macroblöcken)
    Max Videobitrate (VCL) für entsprechendes Profil
    Auflösung

    Ich seh schon, ich muss vermutlich wieder die ITU wälzen. ;)

    greets
    LTJ

  • Das Problem mit dem level_idc und dem profile_idc ist soweit ich mich entsinne auch, dass da das Level/Profile steht was der Encoder setzt, nicht das was minimal gebraucht wird. -> Sind beide also nur bedingt aussagekräftig, da leider viele Encoder nicht wie im JVC Encoder vorgeschlagen wirklich das minimale Level/Profile auswählen. ;)

    Zitat

    Ist dir oder jemand anderem evtl. ein table bekannt wo ein level_idc einer entsprechenden Leveltiefe direkt zugeordnet werden kann?

    Quelle: http://cvs.exit1.org/cgi-bin/viewcv…264.cfg?rev=1.6

    </n>Das Level hängt von Auflösung / Datenrate / VBV und fps ab.


  • ...dass da das Level/Profile steht was der Encoder setzt, nicht das was minimal gebraucht wird...
    ...nicht wie im JVC Encoder vorgeschlagen wirklich das minimale Level/Profile auswählen...

    Das würde aber bedeuten, dass trotzdem niemals ein tieferes Level gesetzt wird als für das Playback erforderlich wäre (wäre ja auch unsinnig). Ünterstützt also die Playback-Hardware das vom Encoder gesetzte Profil/Level, so sollte das File in jedem Falle abspielbar sein.

    Setzt denn x264 das minimal nötige Profil/Level, oder auch nicht?
    Wenn nein, nach welchen Kriterien werden sie gesetzt?

    Zitat
    Code
    (note that the resolutions given are only examples


    Das Level hängt von Auflösung / Datenrate / VBV und fps ab.

    Wie darf ich das verstehen?
    Welche Auflösungen bzw. Auflösungsbereiche kommen denn nun für die entsprechende Level-Stufe in Frage, wenn o.g. Auflösungen nur Beispiele sind?

    greets
    LTJ

  • Zitat

    Setzt denn x264 das minimal nötige Profil/Level, oder auch nicht?
    Wenn nein, nach welchen Kriterien werden sie gesetzt?


    Jein.
    Profile wird gesetzt so wie man es auswählt, d.h. hat nichts mit den Features zu tun die man wirklich nutzt.
    Durch die Levelwahl werden intern die VBV Settings gesezt und falls nötig genutzt, d.h. je nach dem was passiert ist es das Minimum oder nicht. :)
    Stimmt die Auflösung&Framerate nicht, gibt x264 auf der Console eine Warnung aus, bricht aber das Encoden aber nicht ab.
    -> Die Werte die x264 schreibt sind kein Minimum, sondern nur eine Profile&Level Kombination mit dem das Material sicher dekodiert werden kann. (wenn man Auflösung&Framerate rauslässt ;))

    Zitat

    Wie darf ich das verstehen?
    Welche Auflösungen bzw. Auflösungsbereiche kommen denn nun für die entsprechende Level-Stufe in Frage, wenn o.g. Auflösungen nur Beispiele sind?


    Steht so auch im Standard. die Werte haben sich aber in der Praxis als Referenzen durchgesetzt und so wie ich das sehe kann man sie ruhig als fest annehmen.

    -> Ja, das mit den Levels&Profiles ist bei MPEG4 ASP&AVC nicht so ganz 'sauber'. ;)
    An sich wäre es sicher der eleganteste Weg, wenn die Encoder immer das minimal benötigte wirklich angeben würden, tun sie aber i.d.R. nicht unbedingt.

    => Wenn Du das wirkliche Minimum haben willst, dann bleibt einem nichts anderes übrig als den Stream genau zu analysieren.

    Cu Selur

Jetzt mitmachen!

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