Darf man bei x264 das GOP-Ende wegschneiden ?

Started by ted, June 18, 2017, 07:53:04 AM

Previous topic - Next topic

ted

Den Anfang von GOPs darf man schneiden, sonst ist der Rest des betreffenden GOPs fehlerhaft. Soweit habe ich das verstanden. Aber ich dachte, innerhalb von GOPs darf man überhaupt nicht schneiden, also auch nicht das Ende. Denn es soll in x264 erlaubt sein, dass Frames in einem GOP zu einem Frame im selben GOP, aber "rechts/nachfolgend" davon, verweisen dürfen.  Bei Avi gibt es das ja nicht, da kann man das GOP-Ende ruhig wegschneiden.

Aber ich habe jetzt wirklich viele Filme mit Avidemux geschnitten, wobei ich öfter man bei einem P-Frame mitten in einem GOP einen Startmarker gesetzt habe. Dieser ging dann zB bis zum nächsten Keyframe. Diese Sequenz habe ich gelöscht.

Ich hatte bisher nie einen Bildfehler im Ergebnis. War das bisher nur Zufall, weil kein Frame auf einen von mir gelöschten Frame verwiesen hatte?

Wäre nett, wenn jemand etwas dazu sagen könnte.

eumagga0x2a

#1
Innerhalb einer geschlossenen GOP und dann, wenn das nächste I-Frame ein IDR ist, darf man den Endpunkt Anfang eines Schnitts (zum Löschen) an einem P-Frame setzen und es wird immer störungsfrei klappen. Mit offenen GOPs ist es Glückssache. Oft funktioniert es, aber ohne Garantie.

ted

Mit Ihrer Korrektur verstehe ich es besser, Danke. Ich habe immer an P-Frames geschnitten, da ich im Hinterkopf sehr weit hinten irgendwas mit "Schneide nie an B-Frames!" hatte. Glück gehabt.

Es wäre schön, wenn Avidemux IDR- und I-Frames getrennt kennzeichnen würde, dann hätte man ein wenig mehr Kontrolle vor einem Schnitt. Vielleicht könnte man den Entwickler mal bitten ?

So wie ich es mit FFProbe ermittelt habe, ist es z.Z. so:
IDR-Frames werden als I-Frames gekennzeichnet.
I-Frames werden als als P-Frames gekennzeichnet.
P-Frames werden als P-Frames gekennzeichnet.
B-Frames werden als B-Frames gekennzeichnet.
Mehr Frametypen kenne ich bei x264 nicht.

eumagga0x2a

Quote from: ted on June 21, 2017, 01:54:07 PM
So wie ich es mit FFProbe ermittelt habe, ist es z.Z. so:
IDR-Frames werden als I-Frames gekennzeichnet.
I-Frames werden als als P-Frames gekennzeichnet.
P-Frames werden als P-Frames gekennzeichnet.

Nach erstmaligem Lesen des Codes von extractH264FrameType_startCode und extractH264FrameType in avidemux_core/ADM_coreUtils/src/ADM_infoExtractorH264.cpp sieht es für mich danach aus, als würde Avidemux genau diesem Schema folgen. Demnach habe ich Sie vorhin falsch informiert und ein I-Frame im Avidemux immer ein IDR ist.