ubuntuusers.de

Periodische Blöcke in Datei löschen

Status: Gelöst | Ubuntu-Version: Ubuntu 9.04 (Jaunty Jackalope)
Antworten |

ETmokel

Anmeldungsdatum:
6. Januar 2009

Beiträge: Zähle...

Wohnort: Paderborn

Hallo,

Gibt es eine Möglichkeit, periodisch einige Bytes aus einer Datei herauszuschneiden? Als Beispiel: Alle 2352 Bytes folgen 96 Bytes, die ich nicht haben möchte.

Falls jemanden der Hintergrund interessiert: Bei dem Versuch, eine Audio-CD zu kopieren, ist mir irgendwo ein Fehler unterlaufen. Da ich unter Zeitdruck stand, hab ich einfach mit Brasero ein Image erstellt (toc + binary), um es dann später brennen zu können. Ich vermute mal, Brasero hat dafür als back end "readcd" verwendet. Leider lässt sich die mit Brasero gebrannte CD nicht einmal in meinem PC selbst abspielen. Nach zahlreichen zerstörten Rohlingen (unter anderem auch mit cdrecord und sinnvollen Einstellungen probiert) habe ich mit Nero (unter Windows, ich weiß... Ketzerei) versucht, direkt die binäre Datei als Raw-Audio zu brennen. Prinzipiell hat das sogar geklappt, ich habe eine funktionieren Audio-CD...

ABER: Die Musik wird begleitet durch ständiges, periodisches Rauschen. Ich nehme an, dass Nero einfach die Subchannel-Daten als gewöhnliche Audio-Daten interpretiert hat und einfach alles in einen Stream gesetzt hat. Die Dateistruktur besagt, dass immer 2352 Bytes Audio sind und die nachfolgenden 96 Bytes Subchannel. Daher würde ich gerne die 96 Bytes aus der Datei herausschneiden.

Grüße und ein schönes Rest-Wochenende

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4694

Wohnort: Berlin

@ETmokel: Das sollte in jeder halbwegs vernünftigen Programmiersprache recht einfach zu lösen sein. Beispiel in Io (ungetestet):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#!/usr/bin/env io

blocksize := 2352
skipsize := 96
inFile := "input.img" asFile openForReading
outFile := "output.img" asFile open
loop(
    data := inFile readBufferOfLength(blocksize)
    data ifNil(break)
    outFile write(data)
    inFile readBufferOfLength(skipsize)
)
outFile close
inFile close

ETmokel

(Themenstarter)

Anmeldungsdatum:
6. Januar 2009

Beiträge: 3

Wohnort: Paderborn

Danke Marc. Auf die naheliegendste Lösung bin ich gar nicht erst gekommen...

Nunja, hab das ganze dann allerdings kurz in Java geschrieben. Und nun kann ich mir meinen Händel auch endlich anhören, vielen Dank!

Antworten |