hagge
19.07.2004, 15:00
Hi,
mir ist eine kleine Unstimmigkeit zwischen Mpeg2Schnitt V0.6k und IfoEdit V0.96 aufgefallen, was die Framenummern angeht. Der gleiche Frame in IfoEdit hat eine um 2 kleinere Nummer als in Mpeg2Schnitt.
Aufgefallen ist mir dies, als ich mit M2S eine DVB-Datei geschnitten habe und mir eine Kapitelliste als celltimes.txt für IfoEdit angelegt habe. Die generierte VOB-Datei von IfoEdit hatte nach hinten im File zunehmend eine Abweichung bei den Kapitelmarken, nur ein paar Frames, aber immerhin.
Hier die Lösung des Problems:
Nachdem man mit M2S die celltimes erzeugt hat, muss man einfach diese Datei editieren und bei allen Framenummern 2 abziehen. Dann trifft IfoEdit immer die gleichen I-Frames, die auch M2S meinte.
Hintergrund:
Soweit ich es verstehe, kommt dieser Unterschied dadurch zustande, dass IfoEdit fälschlicherweise die Frames so zählt, wie sie in der Datei stehen, während M2S eigentlich korrekt so zählt, wie sie logisch angeordnet sind.
Logisch (mit Framenummern versehen) ist eine GOP:
I1 B2 B3 P4 B5 B6 P7 B8 B9 P10 B11 B12 I13 B14 B15 P16 ...
So zählt auch M2S. Da aber um einen B-Frame zu dekodieren der nächste P-Frame schon bekannt sein muss, ist die Reihenfolge im File ja etwas anders. Nagelt mich jetzt nicht auf das genau Format fest, aber sinngemäß kommen die B-Frames immer erst nach dem P-Frame. Also in etwa so:
I1 P4 B2 B3 P7 B5 B6 P10 B8 B9 I13 B11 B12 P16 B14 B15 ...
IfoEdit zählt nun einfach diese Reihenfolge durch:
I1 P2 B3 B4 P5 B6 B7 P8 B9 B10 I11 B12 B13 P14 B15 B16 ...
Dadurch liegen alle I-Frames außer dem ersten immer um 2 daneben, oder genauer gesagt um die Anzahl B-Frames zwischen den P-Frames.
Außerdem scheint IfoEdit intern nicht mit den absoluten Framenummern zu arbeiten, sondern sich Differenzen zu merken. D.h. ausgehend von seiner nun schon verschobenen Kapitelmarke versucht er die (originale!) Differenz zur nächsten Marke aufzuaddieren -- und landet damit natürlich u.U. wieder knapp hinter einem I-Frame, verschiebt also nochmal weiter. Auf diese Weise summiert sich der Fehler zum Ende des Films hin.
Beispiel:
Gewünschte Kapitel bei Frames 5880, 17267, 20750.
Dann zählt IfoEdit diese I-Frames als: 5878, 17265, 20748.
Aufgrund der celltimes.txt will IfoEdit nun bei 5880 sein Kapitel setzen, sieht, dass das kein I-Frame ist, geht also zum nächste I-Frame, z.B. bei 5890. Jetzt rechnet er irgendwie die Länge des Kapitels drauf, also sinngemäß die echten 17267-5880=11387 Frames, landet also bei Frame 5890+11387=17277. Falls die GOP davor nun aber kleiner als 12 Frames ist, muss er folglich nochmal um eine GOP weiter und landet vielleicht bei 17289. So verschieben sich nach und nach die Kapitel, so dass die Abweichung nach dem 4. oder 5. Kapitel schon spürbar ist.
Auch wenn dieser Fehler eigentlich eher auf die Kappe von IfoEdit geht, wäre ein Feature in M2S dennoch nett, das auf Wunsch diesen Offset bei den nach celltimes.txt exportierten Framenummern abzieht.
Gruß, Hagge
mir ist eine kleine Unstimmigkeit zwischen Mpeg2Schnitt V0.6k und IfoEdit V0.96 aufgefallen, was die Framenummern angeht. Der gleiche Frame in IfoEdit hat eine um 2 kleinere Nummer als in Mpeg2Schnitt.
Aufgefallen ist mir dies, als ich mit M2S eine DVB-Datei geschnitten habe und mir eine Kapitelliste als celltimes.txt für IfoEdit angelegt habe. Die generierte VOB-Datei von IfoEdit hatte nach hinten im File zunehmend eine Abweichung bei den Kapitelmarken, nur ein paar Frames, aber immerhin.
Hier die Lösung des Problems:
Nachdem man mit M2S die celltimes erzeugt hat, muss man einfach diese Datei editieren und bei allen Framenummern 2 abziehen. Dann trifft IfoEdit immer die gleichen I-Frames, die auch M2S meinte.
Hintergrund:
Soweit ich es verstehe, kommt dieser Unterschied dadurch zustande, dass IfoEdit fälschlicherweise die Frames so zählt, wie sie in der Datei stehen, während M2S eigentlich korrekt so zählt, wie sie logisch angeordnet sind.
Logisch (mit Framenummern versehen) ist eine GOP:
I1 B2 B3 P4 B5 B6 P7 B8 B9 P10 B11 B12 I13 B14 B15 P16 ...
So zählt auch M2S. Da aber um einen B-Frame zu dekodieren der nächste P-Frame schon bekannt sein muss, ist die Reihenfolge im File ja etwas anders. Nagelt mich jetzt nicht auf das genau Format fest, aber sinngemäß kommen die B-Frames immer erst nach dem P-Frame. Also in etwa so:
I1 P4 B2 B3 P7 B5 B6 P10 B8 B9 I13 B11 B12 P16 B14 B15 ...
IfoEdit zählt nun einfach diese Reihenfolge durch:
I1 P2 B3 B4 P5 B6 B7 P8 B9 B10 I11 B12 B13 P14 B15 B16 ...
Dadurch liegen alle I-Frames außer dem ersten immer um 2 daneben, oder genauer gesagt um die Anzahl B-Frames zwischen den P-Frames.
Außerdem scheint IfoEdit intern nicht mit den absoluten Framenummern zu arbeiten, sondern sich Differenzen zu merken. D.h. ausgehend von seiner nun schon verschobenen Kapitelmarke versucht er die (originale!) Differenz zur nächsten Marke aufzuaddieren -- und landet damit natürlich u.U. wieder knapp hinter einem I-Frame, verschiebt also nochmal weiter. Auf diese Weise summiert sich der Fehler zum Ende des Films hin.
Beispiel:
Gewünschte Kapitel bei Frames 5880, 17267, 20750.
Dann zählt IfoEdit diese I-Frames als: 5878, 17265, 20748.
Aufgrund der celltimes.txt will IfoEdit nun bei 5880 sein Kapitel setzen, sieht, dass das kein I-Frame ist, geht also zum nächste I-Frame, z.B. bei 5890. Jetzt rechnet er irgendwie die Länge des Kapitels drauf, also sinngemäß die echten 17267-5880=11387 Frames, landet also bei Frame 5890+11387=17277. Falls die GOP davor nun aber kleiner als 12 Frames ist, muss er folglich nochmal um eine GOP weiter und landet vielleicht bei 17289. So verschieben sich nach und nach die Kapitel, so dass die Abweichung nach dem 4. oder 5. Kapitel schon spürbar ist.
Auch wenn dieser Fehler eigentlich eher auf die Kappe von IfoEdit geht, wäre ein Feature in M2S dennoch nett, das auf Wunsch diesen Offset bei den nach celltimes.txt exportierten Framenummern abzieht.
Gruß, Hagge