Keyframes: Bluray (MPEG2;H.264;VC-1)

  • Ich würde gerne wissen wollen wie ich an die infos komme wo in dem m2ts file keyframes gesetzt worden sind.

    ist es möglich das ganze aus der mpls oder clip info datei auszulesen oder muss man dazu das m2ts file selbst untersuchen?

    oder muss man gar erst den videostream extrahieren und dann prüfen wo keyframes gesetzt worden sind?

    mit keyframes meine ich die richtigen echten vollwärtigen IDR-Frames.

    hubble

  • Dafür muss schon die gesamte Datei untersucht werden, weil das Programm sich sowohl mit dem Transport-Stream-Kontainer als auch mit den jeweiligen Videostream-Inhalten auskennen muss.

    Vielleicht kommst du hinter den Aufbau einer DGI-Datei aus DGIndexNV. Ein wenig dokumentiert ist sie ja.

  • danke für die hilfreiche info.

    vll kannst du mir ja gleich eine weitere frage beantworten.

    im erzeugten dgi-file findet man follgenden codeteil

    Code
    ...
    22:FRM 6 22 0 1
    23:FRM 5 23 0 1
    RPS 779710
    I 779726
    24:FRM 6 24 0 1
    25:FRM 6 25 0 1
    ...

    zwischen frame 23 und 24 befindet sich eine "I"-info oder manchmal auch eine "IDR"-info

    zu welchem frame gehört diese info, 23 oder 24 ?

  • das erste frame (nummer 0) da steht das IDR drüber. daher denke ich mal das weiter unten gelegene "I" gehört zu dem 24.frame.

  • Zitat

    zwischen frame 23 und 24 befindet sich eine "I"-info oder manchmal auch eine "IDR"-info
    zu welchem frame gehört diese info, 23 oder 24 ?


    Die Frames in dgi-Files sind in Display Order gereiht.
    IDR 975 gibt die Byte Position (Dezimal) des IDR Frames an, I 779726 die Byteposition des I Frames an.
    Frame 24 und 25 sind B-Frames, es folgt (hier nicht sichtbar) ein Frame mit xx:FRM 7 xx 0 1
    auf dieses I Frame bezieht sich die Byteposition 779726

  • bin wieder zurück und freu mich über deine nachricht bigotti5.

    mir war beim ersten lesen nicht ganz klar was du meinst, dann habe ich mir die datei nochmal angeschaut.

    frame 26: scheint somit das nächste i-frame zu sein.

    Code
    26:FRM 7 26 0 1

    ist ein I-frame an der "7" nach FRM zu erkennen? (26:FRM 7 26 0 1)

    ich habe mal die gesamte datei angehängt.

  • DGIndexNVManual.html

    Zitat

    n:FRM w x y z: A frame of type w (refer to slice types in the AVC specification) with POC x and pic_structure y and matrix coefficients z is present in the source file. FRM entries appear in display order. If pic_structure is -1, then there are no SEI's specifying the picture structure. The number n preceding FRM is the frame number (without honoring pulldown, if any).

    Also in der ISO/IEC 14496-10 nachlesen. Dort findet man in Tabelle 7-6 die folgenden Slice-Typen:

    • I-Slice: 2 oder 7
    • P-Slice: 0 oder 5
    • B-Slice: 1 oder 6
    • SI-Slice: 4 oder 9
    • SP-Slice: 3 oder 8


    Wenn der Wert größer als 4 ist, bedeutet das, dass alle anderen Slices in dem Picture den gleichen Typ haben sollen.

  • SI- und SP-Slices sind was besonderes hinsichtlich der Einschränkungen, woher referenzierte Daten stammen dürfen. Im Detail hab ich das nicht ganz verstanden, es geht da wohl um spatiale Vorhersagen innerhalb des selben Slices (vermutlich nützlich bei regelmäßigen Mustern).

    Ein PDF war relativ einfach zu finden:

    :google: [ ISO/IEC 14496-10 ] => h264_iso-iec_14496-10.pdf
    __

    P.S.: Bei "switched slices" bzw. "transition frames" geht es wohl eher um Bitraten-Skalierung, dass in einem Stream verschiede Qualitätsstufen untergebracht werden, und bei geringer Bandbreite der Anteil für feine Details übersprungen werden kann:

    AVC/H.264's SI/SP Frames? (doom9-Forum)

    Ich gehe davon aus, dass x264 so etwas nicht erzeugt (existiert nur im Extended Profile), und auch ansonsten solche Streams eher selten vorkommen, sicher nicht bei DVB (wahrscheinlich nur, wenn beim Streaming über Netzwerke der Decoder mit dem Streamingserver kommunizieren und so den Stream mit oder ohne Detail-Anteil "bestellen" kann).

    Wikipedia:

    Zitat

    Switching slices, called SP and SI slices, allowing an encoder to direct a decoder to jump into an ongoing video stream for such purposes as video streaming bit rate switching and "trick mode" operation. When a decoder jumps into the middle of a video stream using the SP/SI feature, it can get an exact match to the decoded pictures at that location in the video stream despite using different pictures, or no pictures at all, as references prior to the switch.

  • danke dir, werde ich mich mal bissl belesen.

    das ganze gilt ja nur für AVC-material.

    bei MPEG2 sollte es leichter sein odeR?
    da gibts ja direkt I oder P oder B.

    und bei VC-1 ist es auch nur eine art index-nummer welche dann angibt was es für ein frame ist.

    Code
    ...
    n:FRM x y z: A frame of coding type x (I/P/B/BI/Pskip)
    ...


    also "x" kann dann 0 bis 4 sein?

  • Bei MPEG2 ist es bedeutend leichter, da gibt es nur I, P oder B für das komplette Frame (bei AVC dürften auch verschiedene Slice-Typen in einem Frame sein, wenn ich das richtig verstehe, also z.B. ein I-Slice unter B-Slices für ein B-Frame).

    Über VC-1 weiß ich fast nichts...

Jetzt mitmachen!

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