IDR-Frames lokalisieren

  • Hi,

    Ich versuche mich ein wenig in die H.264 Materie einzulesen um später ohne Probleme schneiden und authoren zu können.

    In Brother John´s Encodingwissen steht geschrieben, das bei H.264 Videos/Streams für Kapitelsprünge und Schnitte, nur die IDR-Frames relevant sind. Da ich ja ARD-HD, ZDF-HD und ARTE-HD streame, muß ich das also berücksichtigen.

    Aaaaaber, wie kann ich denn einen IDR-Frame erkennen bzw lokalisieren ?

    bye Haka

  • Da geht es um das verlustlose Schneiden ohne Neuberechnungen. Programme, die so etwas anbieten, werden (hoffentlich) selbige speziell kennzeichnen (diese werden sich u.a. meist an Szenenschnitten befinden) und auch die Möglichkeit bieten, zum nächstgelegenen IDR-Frame zu springen, weil sie ja wohl wissen müssten, dass das notwendig ist.

    Wenn du aber sowieso alles komplett neu codieren willst, dann kannst du (im AviSynth-Skript mit Trim-Befehlen) schneiden, wo du willst. AviSynth-Skripte haben das Video komplett decodiert, haben sozusagen überall nur Schlüsselbilder.

  • Hallo,

    Wenn er Kapitel einfügen will, ohne den Stream neu zu encoden, dann ist es schon sinnvoll zu wissen wo sich die IDR-Frames befinden. Aber mir ist kein Tool bekannt das IDR-Frames anzeigen kann.

    Gruß Gunnar

  • Aber mir ist kein Tool bekannt das IDR-Frames anzeigen kann.



    Die Indexdateien von DGIndexNV (.dgi) enthalten diese Information. Man muesste nur ein (sehr einfaches) Tool schreiben das die IDR Frame-Positionen extrahiert.

    Ausserdem bin ich mir sicher, dass professionelle Tools wie Elecard StreamEye Pro IDR Positionen anzeigen kann.

  • Die I-Frames scheinen aber die komplette GOP zu umschliessen. Zumindest sind mir beim Schneiden mit TSSniper noch keine fehlenden Blöcke an den Schnittstellen aufgefallen.

  • Habe vor meinen ersten Schnittversuchen mit H264Visa (sehr absturzfreudig und nun auch Testzeit abgelaufen) nach IDR-Frames gesucht und nur I-Frames gefunden. Hatte dann für die Schnitte auch Schlimmstes erwartet, aber keine fehlenden Blöcke oder ähnliches entdeckt. Die geschnittenen *.ts habe ich mir mit DGAVCIndex und SmartCutter bildweise angeschaut um sicher zu gehen. Nach 30-40 Schnitten ist mir dieses potientielle Problem noch nicht untergekommen. Was natürlich nicht heissen muss, dass es nicht existiert ... . (ARD, ZDF und arte HD)

    2 Mal editiert, zuletzt von BeoBiest (29. September 2010 um 00:38)

  • Es wäre schon denkbar, dass Streams existieren, in denen keine explizit als IDR markierten I-Frames enthalten sind, aber trotzdem (überwiegend) nicht über diese I-Frames hinweg referenziert wird. Das kann dann halt beim Schneiden (meistens "zufällig") trotzdem gutgehen.

  • Sehe auch kein Problem einen Encoder anzubieten, der die Referenzierung über I-Frames hinweg (Long Term Prediction?) nicht implementiert hat bzw. als abschaltbare Option anbietet. Der Standard zwingt ja nicht, dieses Feature auch einzusetzen. Ich denke mal es verstösst z.B. nicht gegen die Regeln, einen AVC-Stream zu produzieren welcher nur aus I/IDR-Frames besteht.

    Ich kann mir gerade im Bereich Fernsehen der ÖR vorstellen, dass die Long Term Prediction aus Gründen der Kodiergeschwindigkeit (Liveberichterstattung) und den Hardwareanforderungen auf beiden Seiten bewusst nicht eingesetzt wird? Gerade die Kodiereffizienz scheint, wenn ich mir den Fülldatenanteil anschaue, momentan nicht das entscheidende Kriterium zu sein.

    Interessant wäre in dem Zusammenhang, welches Verhalten der Standard dem Decoder auferlegt, wenn er keine IDR-Frames entdeckt? Und wie sieht es bei den kommerziellen HD-Sendern aus? Habe leider keinen Zugriff auf solch ein Material.

  • Ein DVB Stream benötigt auch keine IDR Frames - es muss nicht geschnitten oder gespult werden, bildgenauer Einsprung ist nicht nötig.
    Die Referenzierung über I-Frames hinweg ist schon vorhanden nur verwerfen die gängigen Schnittprogramme wie TSSniper oder TS Paket Editor die ins Leere gehenden Frames.
    z.b vor dem Schnitt (die dunkelgrünen B Slices referenzieren auf nicht vorhandene, vorhergehende Ref-Frames, obere Reihe Stream Order, untere Display Order)

    Code
    [B][COLOR=Red]I[/COLOR] [COLOR=SeaGreen]B B B B B B B B  B  B  B B  B  B  B[/COLOR] [COLOR=RoyalBlue]P[/COLOR]  [COLOR=YellowGreen]B  B  B  B  B  B  B  B  B  B  B  B  B  B  B[/COLOR]  [COLOR=Red]I[/COLOR]  [COLOR=YellowGreen]B  B  B[/COLOR] ...4 3 5 2 7 6 8 1 11 10 12 9 14 13 15 0 20 19 21 18 23 22 24 17 27 26 28 25 30 29 31 16 36 35 37 34...[/B]

    man sieht das I-Frame wird erst als 16tes Bild angezeigt werden.
    Nach Schnitt sieht die GOP so aus

    Code
    [B][COLOR=Red]                                     I[/COLOR] [COLOR=RoyalBlue]P[/COLOR] [COLOR=YellowGreen]B B B B B B B  B  B  B  B  B  B  B B[/COLOR]  [COLOR=Red]I[/COLOR]  [COLOR=YellowGreen]B  B  B[/COLOR] ...
                                         0 5 4 6 3 8 7 9 2 12 11 13 10 15 14 16 1 21 20 22 19 ...[/B]

    Schneidet man mit einem einfachen Dateisplitter oder HEX Editor würden die B-Frames nicht entfernt werden und man hätte Block-Störungen bzw gar kein Bild.

    Ein IDR Frame wäre immer auch das erste Frame (Frame 0) in der Display Order.

Jetzt mitmachen!

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