Bastelaufgabe
Man nehme: Eine Audiodatei, in die sich versehentlich zwei (OGG-)Streams eingeschlichen haben. Dadurch kommt der VLC-Player durcheinander, und auch Audacity kann nur den ersten Stream anzeigen und bearbeiten. Dieser erste Stream ist nun unpraktischerweise auch noch äußerst uninteressant für mich. Um nun die erwünschte Information in den 128 MB zu finden, habe ich mich erstmal hingesetzt, und die Datei analysiert. Ein Ogg-Vorbis-Stream hat recht viele 'OggS'-Textschnippsel, die also nicht geeignet sind, den richtigen Stream zu finden. Praktischerweise gibt es aber kurz nach dem Beginn des Streams auch noch den Text 'vorbis', den man auch mal suchen kann. In dem Fall habe ich festgestellt, dass der in der ganzen Datei genau zwei Mal vorgekommen ist: Einmal am Anfang, bei dem uninteressanten Stream und einmal bei ungefähr 20% der Datei. Meine Vermutung ging dann dahin, dass genau da der interessante Stream anfangen könnte.
Da sich eine 128 MB-Datei schlecht in einem Editor zerteilen lässt, habe ich dann erstmal versucht, herauszufinden, wie weit in die Datei diese 20% gehen, und die Zahl 26894459,2 Bytes errechnet. die Nachkommastelle ignorierend habe ich mir die Datei dann aufgeteilt:
dd if=bigFile.ogg of=smallTest.ogg bs=26894459 count=1 skip=1
Ein Blick in die Datei ergab, dass ich nicht genau den richtigen Punkt erwischt hatte. Eine Suche ergab, dass der Text 'vorbis' sich bei Position 0xbccf0 in der Datei versteckt hielt. mit einfacher Rechenkunst kam ich dann zu diesem Befehl:
dd if=bigFile.ogg of=smallTest.ogg bs=27667819 skip=1
Dummerweise erwies sich die Datei als defekt. Es fehlten nämlich die ersten paar Bytes. ein bisschen Experimentieren brachte dann diese Befehlszeile hervor:
dd if=bigFile.ogg of=smallTest.ogg bs=27667812 skip=1
Dadurch wurden aus der ursprünglichen Datei die ersten 26 Megabyte verworfen und der Rest in eine neue Datei kopiert. Diese Datei enthielt dann auch nur noch einen einzigen Stream, und ließ sich ohne großen Aufwand in Audacity öffnen und Bearbeiten, um an die fast zwei Stunden interessanten Inhalt zu gelangen.
Lektionen der Nacht: Man kann dd verwenden, um Dateien aufzuteilen. Ogg-Vorbis ist keine Hexenkunst. Content is king.
Ich habe keine Ahnung, wie ich vorgegangen wäre, wenn ich mehrere Dateien zusammenkleben hätte sollen, aber die Aufgabe musste ich auch nicht lösen.
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
doppelfish am :
Ganz einfach. Spätestens beim zweiten Versuch wird's spassig.
Andre Heinrichs am :
Mal ganz davon abgesehen, dass ich für gewöhnlich nicht in leeren Verzeichnissen arbeite. * dürfte also eine Menge Müll beinhalten, der in eine Audiodatei nicht reingehört.
Also dann doch eher
cat Prefix*.ogg > /tmp/target/out.ogg
aufrufen, und zwar außerhalb von /tmp/target/.
doppelfish am :
doppelfish@sputnix:~ > df /tmp/
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s3e 496M 1.3M 455M 0% /tmp
Hm. Könnte knapp werden.
Andre Heinrichs am :
doppelfish am :
total 600
2 loader.conf 8 beastie.4th 2 loader.rc 2 boot0 2 mbr
2 modules/ 4 frames.4th 240 pxeboot 2 boot0sio
10 kernel/ 240 loader* 2 screen.4th 2 boot1
2 defaults/ 8 loader.4th 36 support.4th 8 boot2
2 device.hints 16 loader.help 8 boot 2 cdboot
Auja. Das wird spassig.
Andre Heinrichs am :
doppelfish am :
Andre Heinrichs am :
doppelfish am :
Andre Heinrichs am :
doppelfish am :
Andre Heinrichs am :
doppelfish am :
Andre Heinrichs am :
doppelfish am :