PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mpeg2Schnitt und IfoEdit: Framenummer weichen um 2 ab


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

quwerty71
20.07.2004, 15:42
Hallo,
interessante Information Hagge! Kann das irgendjemand bestätigen? Es
würde zumindest erklären, wieso mein DVD-Player nie genau die von mir
gewünschen Kapitel anspringt, sondern immer ein Stück weiter. Ich bin
schon dazu übergegangen die Kapitel immer 2 I-Frames vorher zu setzen.
Ich dachte aber, das dies an meinem DVD-Player liegt.
Gruß,
q

Edit:
Hat mir ja keine Ruhe gelassen. Also Test:
- Kleines Video mit einer Kapitelmarke an Frame 1782.
- Mit IFOEdit die entsprechenden VOBs erzeugt
- Celltimes extrahiert, siehe da -> Frame 1792.
- Kapitelmarke nach 1780 gesetzt und wieder mit IFOEdit VOBs erzeugt.
- Celltimes extrahiert, siehe da -> Frame 1780.

Zumindest kann ich das beschriebene Verhalten reproduzieren und es
erklärt auch meine Subjektiven-Eindruck. Man kann sich jetzt natürlich
selber helfen, aber es wäre doch enorm prakitsch, wenn M2S direkt
von den Framenummern "beim abspeichern" 2 abzieht. Im Programm
sollten aber weiterhin die "richtigen" Framenummern angezeigt werden.
Gruß,
q

Martin
20.07.2004, 20:13
Hallo,

ich habe es warscheinlich noch nicht erwähnt. In der Arbeitsumgebungsdatei gibt es eine Variable "Kapiteloffset". Wozu könnte die wohl gut sein? :wink:
- 2 bedeutet das die Kapitel 2 Bilder früher gesetzt werden, allerdings auch in der Anzeige. (Das kann sich aber ändern.)

Achtung Fehler: Setzt man dann auf Bild 0 ein Kapitel kommt -2 herraus was zu Fehlern führen kann.

Martin

quwerty71
21.07.2004, 09:21
Hallo Martin,

Hallo,

ich habe es warscheinlich noch nicht erwähnt. In der Arbeitsumgebungsdatei gibt es eine Variable "Kapiteloffset".
[...]
Achtung Fehler: Setzt man dann auf Bild 0 ein Kapitel kommt -2 herraus was zu Fehlern führen kann.

Martin

Ja, wer rechnet denn damit, das du schon längst was passendes eingebaut hast :top:.
Zur Sicherheit könntest du ja Kapitel verhindern, wenn BildNr+Kapiteloffset < 0 ist.
Trotzdem bin ich der Meinung, das im Programm ein Hinweis geben sollte, wenn der Nutzer mit IFOEdit weiterarbeiten will. Vielleicht in Form eines weiteren Kapitelformats. Z.B.: Kapitelformat 4: (IFOEdit, BildNr-2). Denn nur dann weiss der Nutzer, das die Frames für IFOEdit nicht 1:1 verwendet werden sollten.
Ein Fehler ist mir dabei aber noch aufgefallen, wenn ich jetzt mit (Kapiteloffset=-2) einen Doppelklick auf ein Kapitel in der Liste mache, dann berücksichtigt M2S den Offset nicht. Es springt also zur Bildnummer, die in der Liste angezeigt wird und nicht zur Bildnummer +2.
Gruß,
q

hagge
21.07.2004, 10:10
@Martin

Wow, nicht schlecht, dass es da sogar schon eine Lösung gibt. Wobei ich mich noch frage, ob dies immer mit einem konstanten Offset funktioniert.

Wenn ich mit meiner Erklärung des Phänomens (siehe erstes Posting in diesem Thread) richtig liege, hängt dieser Offset ja von der Anzahl B-Frames zwischen den P/I-Frames ab. Wie groß ist nun die Wahrscheinlichkeit, dass sich die GOP-Struktur innerhalb eines Filmes ändert, und z.B. von 2 auf 3 B-Frames oder umgekehrt wechselt?

@q

Eine Arbeitsumgebung einzurichten heißt ja, sich sein M2S für sein aktuelles Projekt oder seine aktuell verwendete Toolchain anzupassen. Insofern kann man sich ja eine IfoEdit-Umgebung einrichten, in der das Kapiteloffset gesetzt ist. Wenn man auch mit anderen Tools arbeitet, richtet man sich dafür eben eine andere Arbeitsumgebung ein. Insofern finde ich das jetzt schon eine recht gelungene Lösung. OK, in M2S selbst sollten allerdings wirklich die richtigen Bilder angesprungen werden und die Sicherheitsabfrage auf <0 sollte auch rein. Aber ansonsten reicht ein Hinweis in der Doku auf das Zusammenspiel mit IfoEdit.

Vielleicht wäre es eine Idee, wenn schon eine Reihe von vordefinierten Arbeitsumgebungen inklusive einer für IfoEdit bei M2S dabei wären, dann wäre den meisten Usern geholfen.

Gruß, Hagge

quwerty71
21.07.2004, 12:44
Hallo Hagge,
pinzipiell natürlich richtig. Ich gehe nur davon aus, dass nur die wenigsten die Doku lesen und das Problem zunächst nicht bemerken. Ich habe ja auch gedacht mein Player ist der Schuldige. Ohne deinen Hinweis wäre ich ja nie auf die Idee gekommen die Celltimes in IFOEdit nachzuprüfen. Wenn ich bedenke, wie viele DVDs ich inzwischen mit verschobenen Kapiteln gebrannt habe, dann wäre ich als Neu-User für einen deutlich sichtbaren Hinweis dankbar gewesen. Bei allen Anleitungen die ich bisher über das Authoring mit IFOEdit gelesen habe, ist mir noch nie ein Hinweis darauf aufgefallen, das die Celltimes sich auf die reale Abfolge der Bilder im Datenstrom bezieht und nicht auf die logische.
Zudem habe ich mir natürlich auch schon die Frage gestellt, ob die -2 in jedem Fall richtig ist. Wenn nicht, dann wäre ein spezielles Kapitelformat schon wünschenswert.
IFOEdit ist ja schon ein ziemlich altes Tool. Vielleicht sollte ich mal darüber nachdenken was anderes zu benutzen.

Gruß,
q

Martin
21.07.2004, 17:41
Hallo Hagge,
Wenn ich mit meiner Erklärung des Phänomens (siehe erstes Posting in diesem Thread) richtig liege, hängt dieser Offset ja von der Anzahl B-Frames zwischen den P/I-Frames ab. ...
Richtig. Vielleicht geht es einfach -3 (oder -4) einzutragen. IfoEdit nimmt doch dann das nächste I-Frame, oder?

Mit den 2 Fehlern habt ihr recht. Daran hatte ich noch nicht gedacht.

Martin

hagge
22.07.2004, 11:08
Hallo Martin,

Vielleicht geht es einfach -3 (oder -4) einzutragen. IfoEdit nimmt doch dann das nächste I-Frame, oder?
Stimmt, gute Idee! Wobei es dann wieder schief geht, wenn dann mal mehrere I-Frames aufeinander folgen, weil dann wird das Kapitel auf einmal zu früh gesetzt. Aber ich glaube jetzt betreiben wir Haarspalterei.

Ich denke, ein Offset von -4 müsste in 99.9% aller Fälle funktionieren.

Tschau,
Hagge

Cela
20.08.2004, 13:04
Ich denke, ein Offset von -4 müsste in 99.9% aller Fälle funktionieren.
Hagge

Das müsste sich doch einfach im Rechte-Maustasten-DropDown-Menü zur Kapitelliste erledigen lassen, z.B.:

"Kapitelliste speichern" und
"Kapitelliste speichern unter" ... speichert mit -4
und zum Ausgleich
"Kapitelliste öffnen" ... lädt mit +4

Oder eine eigene Kommandogruppe
"CellTimes.txt speichern [unter]" ... speichert mit -4
"CellTimes.txt öffnen" ... lädt mit +4

Oder so ähnlich.
Würde jedenfalls das Umrechnen der Werte im Excel ersparen.

Eine kleine Abwechslung für einen langweiligen Regentag.
Es regnet doch, oder?

Gruß
Cela

Martin
21.08.2004, 23:42
Hallo Cela,

sowas ähnliches ist in Arbeit. Allerding habe ich gerade das ganze Programm "zerpflückt" so das es noch etwas dauert. Dann aber gleich mit mehreren Änderungen (und neuen Fehlern :wink: ).

Martin