Wo ist das 16:9-Flag in einer DV-avi-Datei?

  • Ich gebe zu, die Frage scheint etwas aus der Zeit gefallen.

    DV-avi-Dateien, von mini-DV-Cassetten über Firewire eingelesen, habe ich aus der Zeit von ca. 1996 bis 2005. Um mir das Ansehen und die Bearbeitung zu erleichtern, schreibe ich mir kleine Hilfsprogramme, um verschiedene Bearbeitungsschritte zu automatisieren. Dabei ist nun das Problem aufgetaucht, dass ich die Dateien, die in 4:3 aufgenommen wurden, von denen unterscheiden muss, die in 16:9 aufgenommen wurden.

    In der Datei muss eine Markierung vorhanden sein, denn sowohl Virtualdub2 als auch der VLC-Player können beide unterscheiden und spielen sie ohne weiteres Zutun im richtigen Seitenverhältnis ab.

    Ich habe mir bereits die Dateibeschreibungen bei Wikipedia angesehen. Da steht auch einiges über den Aufbau von avi-Dateien drin. Nur das 16:9-Flag habe ich noch nicht entdeckt. Für Hinweise, wo ich da vielleicht fündig werden könnte, wäre ich sehr dankbar.

    Viele Grüße
    Gerold

  • Vielen Dank für den Hinweis. Ich hatte das bereits gesehen und normalerweise sollte man da fündig werden. Einige Eigenschaften wie Bildgröße und Bilderzahl findet man dort auch.


    Ich habe es mir nun nochmals genau angesehen und bin auch einigen Links gefolgt, die Suche war leider nicht von Erfolg gekrönt. Ich kenne auch den genauen Namen des Flags nicht, wonach ich suchen könnte.


    Es ist schwieriger als ich dachte. Ich suche dennoch mal weiter.

    Viele Grüße
    Gerold

  • Das sieht vielversprechend aus. Wo finde ich diese pdf?

    Viele Grüße
    Gerold

  • KreuzBlick

    Falls das alles zu kompliziert wirken sollte, versuch' mal das Byte am FileIndex 0xC9 zu lesen. Wenn da eine 04 steht, sollte es ein 16/9 Format sein bei einer 03 oder anderem Wert eine normale 4:3 Darstellung.

    LG
    Peter

  • Hallo Peter,


    vielen Dank für die umfangreichen Informationen. Ich bin gerade dabei, das für mich auszuwerten und habe wohl auch schon eine Lösung gefunden. Sobald ich mir einigermaßen sicher bin, werde ich hier berichten.

    Viele Grüße
    Gerold

  • Ich habe versucht, meine Erkenntnisse in einem kleinen Programm zusammenzufassen. Da das Forum zip und exe-Dateien nicht zulässt, verlinke ich die Datei:

    http://denke-mit.de/Utilities/PARTest.zip

    Die zip-Datei enthält eine exe-Datei, die ohne Installation lauffähig ist und daher durch Löschen rückstandsfrei entfernt werden kann. Nach Starten zeigt sie ein Fenster, auf das man Dateien ziehen kann. Bei DV-avi-Dateien wird angezeigt, ob sie ein Seitenverhältnis von 4:3 oder 16:9 haben.

    Wenn jemand DV-avi-Dateien hat, würde ich mich über einen Test freuen. Dann werde ich auch mitteilen, wie ich das gemacht habe.

    An dieser Stelle nochmals Dank an elCutty, ohne den ich das nicht hinbekommen hätte.


    Im Übrigen war der Hinweis auf 0xC9 bei mir nicht zielführend, da in allen meinen DV-avi-Dateien dort eine Null steht, wenn ich nicht einen grundsätzlichen Denkfehler gemacht habe.

    Viele Grüße
    Gerold

  • Im Übrigen war der Hinweis auf 0xC9 bei mir nicht zielführend, da in allen meinen DV-avi-Dateien dort eine Null steht, wenn ich nicht einen grundsätzlichen Denkfehler gemacht habe.

    Eigenartig. Bei meinem alten Files, die aber alle mit Scenerlizer eingelesen wurden, klappte das ausnahmslos.

    Könntest du bitte mal eines deiner 16:9 Files hoch laden?



    Da das Forum zip und exe-Dateien nicht zulässt, verlinke ich die Datei:

    http://denke-mit.de/Utilities/PARTest.zip

    Die Datei hat nach dem Download bei mir leider immer die Größe NULL.


    Das sagt Firefox dazu :

    FF_Info.jpg


    Vielleicht besser über Dropbox oder eigenen T-Online Speicher probieren.

    LG
    Peter

  • Ein Beispiel für ein kurzes 16:9 File findest du hier:

    http://denke-mit.de/Utilities/S100--19960428144543.avi

    Anbei noch die Hex-Darstellung des Dateianfangs.


    Hex.jpg


    Ich selbst habe gerade die zip-Datei nochmal erfolgreich heruntergeladen. Macht da vielleicht dein Virenscanner Probleme? Falls es nicht klappt, müssen wir einen anderen Weg finden.

    Viele Grüße
    Gerold

  • Geh mal auf den Downloadpfeil in der Systemleiste von Firefox und mach auf der Datei einen Rechtsklick. Dann kannst du wählen, dass du die Datei "trotzdem" herunterladen willst.

    Die Datei hat jetzt das bekannte Passwort "12345" (ohne die Anführungszeichen.)


    Es wird für einen Programmierer immer schwieriger, seine Programme weiterzugeben.

    Viele Grüße
    Gerold

  • Dein Programm funktioniert gut, auch mit meinen alten DV-Files aus der Sony TRV900. Die Header meiner mit Scenerlyzer eingelesenen Files sehen recht unterschiedlich zu deinen aus. Daher konnte dort der absolute Offset auch nicht greifen. Es müssten die Header genau geparsed werden. Aber das macht dein Programm vermutlich nicht, sondern nutzt Windows Resourcen die Frame-Größe zu ermitteln und damit das Pixel Aspect Ratio.



    Es wird für einen Programmierer immer schwieriger, seine Programme weiterzugeben.

    Firefox hat übrigens nicht den Inhalt der *.zip bemäkelt, sondern die URL scheint auf einer Black-List zu stehen. Auch als Nichtkunde der Telekom kann man sich dort für solche Zwecke einen kostenlosen eigenen Bereich anlegen und nutzen.

    LG
    Peter

  • Wie hast du es denn nun realisiert?

    Die Frage ist berechtigt und die Auflösung soll hier stattfinden.


    Aber zunächst mal vielen Dank fürs Testen. lch liebe solche Herausforderungen. Das Programm, das ich hier eingestellt habe, ist ja nur die Hülle der eigentlichen Erkennungsroutine, die ich auch in anderen Programmen verwenden kann. Meine Entwicklungsumgebung dafür ist übrigens Lazarus, weil ich mich beruflich bedingt viel mit PASCAL beschäftigt habe.


    Ich habe nach einer Methode gesucht, wie ich 4:3 Clips von 16:9 Clips, die als DV-avi vorliegen, durch ein Programm unterscheiden kann. Inzwischen scheint mir, dass es mehrere Stellen im Videoclip gibt, die das markieren. Es genügt aber, eine zu finden, die universell genug ist.


    Der Versuch, ohne weitere Informationen grundsätzliche Unterschiede für diese Eigenschaft zwischen Dateien zu finden, ist hoffnungslos, weil Videodateien sowieso ganz unterschiedliche Inhalte haben. In dieser Situation hat mir dein Hinweis auf die pdf-Datei sehr geholfen. Darin wird auf Seite 16 die Eigenschaft DIST (Display select mode) beschrieben. Das zweitniederwärtigste Bit (mit dem Stellenwert 2) macht danach den Unterschied: 0 bedeutet 4:3, 1 bedeutet 16:9. Wo findet man aber dieses bit in der riesigen Videodatei?


    Ein Hinweis besagt, dass die Bytegruppe von der Bitfolge 01100001 eingeleitet wird. Man könnte also versuchen, nach $61 zu suchen. Aber das ist das kleine 'a', das kommt häufig vor. Das Byte danach besteht aus 2bit CGMS und 6xRes. Ist CGMS 'copy free', würde das 00 bedeuten, die reservierten Bytes sollen alle auf 1 gesetzt werden. Somit bekommt man die Bitfolge 00111111, also $3F. Die neue Suche nach $61 3F führt aber ins Leere. (Im nächsten Abschnitt sehen wir, warum.) So kommen wir nicht weiter. Wir müssen uns die weitere Umgebung ansehen.


    Auf Seite 15 wird beschrieben, welche 5 Bytes davor stehen. Die ersten zwei Bytes dieser Folge sind als Bitfolge 01100000 und 8xRes. Somit lohnt sich eine Suche nach $60 FF. Dabei werden wir fündig. Und das tolle dabei ist, dass die Folge so weitergeht: $60 FF FF 20 FF 61 33 48. Bingo! Das sieht so aus, als hätten wir die richtige Stelle gefunden, denn $61 an 6. Stelle eröffnet die von uns eigentlich gesuchte Bytefolge. Das Byte, das die Bits für DIST enthält, hat bei einer 4:3-Datei den Wert $48. Bei einer 16:9-Datei heißt die Bytefolge $60 FF FF 20 FF 61 33 4F. Damit haben wir den Unterschied: $48 bei 4:3 und $4F bei 16:9. Letztendlich untersuche ich dann bei diesem Byte nur das zweitniederwärtigste Bit.


    Soweit erst mal, ich hoffe, noch weitere Ergänzungen bringen zu können.

    Viele Grüße
    Gerold