Mpeg2Schnitt: warum letzter Frame I-Frame?

W

WLibero

Gast
Hallo ihr,

an die Kenner des Programms:
Ich verstehe, dass ein Schnitt (ohne Neucodierung) mit einem I-Frame anfangen muss, aber warum muss er auch mit einem I-Frame enden? Es ist doch egal, welcher der letzte Frame ist. Wenn nicht, warum? (ich kenne die Bedeutung von I-, B-, P-Frames) Ich sehe ein, dass ich "framegenau schneiden" muss und folglich neu codiert werden muss, wenn der erste Frame kein I-Frame sein soll, aber warum das auch beim letzten sein müsste, dafür fehlt mir das Verständnis.

(wollte mich nicht im x-ten "offiziellen" Forum anmelden, deswegen frage ich hier)

Danke.
 
Hi,

wenn du framegenau schneiden willst musst du immer am Anfang oder Ende einer GoP (Group of Pictures) schneiden.
Folglich ist der IN-Schnitt an einem I-Frame und der OUT-Schnitt ebenfalls an einem I-Frame.
Es ist immer darauf zu achten, dass nur das I-Frame (Intra-Bild) zur Bearbeitung benutzt werden kann. Eine typische GOP-Struktur beginnt mit dem I-Frame, endet vor dem nächsten I-frame und sieht folgendermaßen aus: IBBPBBPBBPBB.

Beginnst du den IN-Schnitt an einem I-Frame und den OUT-Schnitt an einem P-Frame, hast du keine Volle GoP mehr und die Bildinformationen ab den P-Frame bis zum I-Frame (mindestens zwei B-Frames), sind nicht mehr vorhanden. Somit wurde nicht framegenau geschnitten.

Eine gute Erklärung dafür kannst du hier nachlesen.
 
Danke für die Erklärung und den Link. Dennoch verstehe ich es nicht so ganz:

- Was spricht dagegen, dass die letzte GoP beschnitten wird? Also aus IBBPBBPBBPBB wird z.B. IBB. Ist die GoP halt kürzer. Dass danach etwas fehlt, kann doch nicht zu Artefakten führen, denn dann ist der Film/Schnitt ja vorbei. Ich entferne ja nicht einfach Frames zwischendrin sondern kürze nur.

- Ok, die GoP IBBPBBPBBPBB muss vollständig bleiben. Wenn ich die aber schneide, ist das Erebnis immer IBBPBBPBBPBBI Das sind zwei GoPs von denen die zweite nur aus dem I-Frame besteht. Aber genau das ist doch unzulässig, weil die zweite GoP dann nicht vollständig ist. Das widerspricht sich doch, oder?
 
Hi,

eine komplette GoP besteht aus IBBPBBPBBPBB.
Wenn du jetzt framegenau schneidest heißt das: du schneidest immer inklusive einem den I-Frame!
Beispiel:
SchnittIBBPBBPBBPBBSchnittIBBPBBPBBPBBSchnitt u.s.w. So bleibt die GoP immer vollständig.

Du solltest natürlich nie so schneiden -> IBBPBBPBBPBBI das könnte Artefakte hervorrufen.

"- Was spricht dagegen, dass die letzte GoP beschnitten wird?" Nichts.
Aber, diese Schnittstelle muss nachberechnet werden, weil dem letzten I-Frame ja Informationen fehlen, welche in der abgeschnittenen Rest-GoP stecken. Schnittprogramme wie Cuttermaran machen das.

Beispiel: der OUT-Schnitt muss immer an einem P-Frame sein!
IBBPSchnitt -> Rest-GoP -> BBPBBPBB. In dieser Rest-Gop stecken Bildinformationen welche für das komplette Bild nötig sind. Diese Bildinformationen werden in die verstümmelte GoP IBBP eingerechnet.
 
Also nochmal ganz langsam:
  • Framegenaues schneiden
    weil dem letzten I-Frame ja Informationen fehlen, welche in der abgeschnittenen Rest-GoP stecken.
    Ok, dann ist das geklärt. Ich dachte bisher, ein I-Frame sei schon vollständig und der B-Frame ist nur, zusammen mit dem I-Frame, für die Bildung des zweiten Frames zuständig. Gut, ist geklärt. Danke.

  • nicht framegenaues schneiden = vollständige GoPs schneiden
    Mir ist völlig klar was das bedeutet! Ich versteh nur nicht, warum sich das Programm dann anders verhält als erwaret. Du sagst ja selbst, dass IBBPBBPBBPBB eine vollständige Gop ist. So, ich will diese Gop also vollständig schneiden. Geht aber nicht, weil das Programm immer noch den darauffolgenden I-Frame mitnimmt. Ich bekomme also immer IBBPBBPBBPBBI. Das ist das Problem und die Eingangsfrage (s. Betreff). Ich kapier einfach nicht, wofür der zweite I-Frame zwingend gebraucht wird. Ich will ihn nicht, muss ihn aber mitschneiden. Warum?
 
Nö, ist ganz einfach. :)


Ich seh's am Ergebnis. Wenn ich zwei Gops schneide bekomme ich IBBPBBPBBPBBIIBBPBBPBBPBBI. Gerade nochmal probiert. Geht nicht anders.

1. Video öffnen
2. IN-Button klicken
3. Button [Pfeil rechts] neben dem OUT-Button sooft klicken bis der nächste I-Frame erreicht ist. (P-Frame ginge auch aber mir gehts ja um vollständige Gops)
4. Cut
5. Dasselbe nochmal irgendwo im Film
6. Neues Video erzeugen und Ergebnis bestaunen:
IBBPBBPBBPBBIIBBPBBPBBPBBI
 
Hi,

hmm, das was du sagst ist richtig. Ich habe es mit M2S nachvollzogen und M2S zeigt das tatsächlich so an ... :rolleyes: ... allerdings ist das lediglich eine falsche Anzeige.

M2S schneidet richtig, zeigt aber die GoP selber falsch an!

Kontrolliert mit Elecard StreamEye: Ergebnis: völlig korrekte GoP-Strucktur!
Kontrolliert mit GSpot: Ergebnis: völlig korrekte GoP-Strucktur!

Hätte mich auch gewundert wenn M2S falsch schneiden würde ... warum das jetzt falsch angezeigt wird, weiss ich nicht, Programmierer fragen.

Elecard StreamEye wirst du nicht haben, aber mit GSpot (Freeware) kannst du das selber überprüfen. Clip laden und im Video-Bereich auf den Button VSG (Visual GoP Struct) klicken. Dann öffnet sich ein kleines Fenster mit der grafischen Darstellung der GoP-Struktur.

Fazit: viel Wind um nichts ... ;)
 
Servus!

Zwischendrin schon mal danke für deine Geduld :daumen:

Leider hast du nicht Recht. Es ist kein Anzeigefehler. Ich hab's mit Virtualdub geprüft. Es ist so wie ich sage. Bsp siehe Anhang. Auch Screenshot GSpot.
 

Anhänge

  • test.zip
    968,6 KB · Aufrufe: 129
  • gspot.PNG
    gspot.PNG
    12,8 KB · Aufrufe: 138
Die Erklärung scheint zu sein, dass B-Frame sich auch auf nachfolgende I- oder P-Frames beziehen. Deswegen muss immer der nachfolgende I-Frame mitgeschnitten werden, um eine GoP vollständig korrekt wiedergeben zu können. M2S arbeitet also richtig - meine Beobachtung war aber auch richtig ;) - und ich weiß jetzt auch, warum. Somit ist das Thema geklärt.

Danke "herja"!
 
Zurück
Top