Erkenne ein Wavefile

Erstellt 7 Antworten8 Beiträge
Startbeitrag#1
Mal angenommen ich habe eine Folge von Bytes auf einem Wavefile.
Ohne Header und so, einfach scheinbarer Datenmüll.
Ich _weiss_ es sind 24bit Files. Stereo oder Mono.
Also gibt es 3 bzw. 6 Möglichkeiten diesen Müll zu interpretieren.
Wo halt das Bytetripel anfängt. (der Datenmüll fängt irgendwo an)
Also insgesamt 6 Möglichkeiten eine Bytefolge zu interpretieren.
(die Fälle Stereo links-recht können erstmal nicht erkannt werden)
So, nun ist die Frage welches der drei Interpretationen ist richtig und ist es überhaupt ein Wavefile?
Die Frage ist jetzt wie erkenne ich mit ausreichender Wahrscheinlichkeit ob es sich um Audiodaten handelt.
Also ersten Ansatz würde ich Stetigkeit nehmen. D.h. grosse Sprünge sind selten und kommen nicht hintereinander vor.
Zweitens den Anstieg.
hat noch jemand Ideen?
FFT wie bewerten?
Bei wirklichem Datenmüll sollte rauschen rauskommen.
Die Musik ein "vernünftiges" Spektrum.
Bei Drums rythmische Wiederholungen.
Hmm...was noch?
ZitierenPost melden
Antwort#2
Hm, ich kenne das wave-format nicht exakt, aber wenn es "nur" um tripel-Detektion geht:
3-kanalige FFT über alle Tripel und deren Folgebytes und dann die richtige selektrieen, es dürfte aber eine Betrachtung der Differeentiale zwischen den Folgewerten reichen: Bei den falsch interpretierten gibt es praktisch bei jeden Übergang Knacken.
Man kann aber auch noch einen diskreten Weg gehen: Bei einem 24-Bit-Wert mit ausreichendem Pegel sind meist zwei von drei Baytes beim Übergang auf den nächsten Wert gleich, zumindest aber eines. Es sind dann die höherwertigen / das höchstwertigste. Ich würde mal sagen, man erkennt zusammengehörige Tripel beim ansehen der ausgedruckten Daten auf einen Blick.
Dehnt man die Betrachtung nach der Erfassung der Tripel auf 6 Werte aus, sollte auch erkennbar sein, ob Mono oder Stereo vorliegt.
Interessante Aufgabe.
ZitierenPost melden
Antwort#3
Das Ansehen war auch meine erste Idee.
Praktisch ein graphischer Editor, aber das dauert zu lange.
Es muss automatisch gehen, für die restlichen 1% kann man dann manuell hand anlegen. Aber bis dahin sollte es automatisch gehen.
Background ist, das meine HD (FAT32) nicht direkt gecrashed ist, sondern Datenmüll produziert hat.
ZitierenPost melden
Antwort#4
P.S. zu primitiv darf die erkennung nicht sein. Denn auch in anderen Dateien sind benachbarte Werte ähnlich oder gleich. Schwierig ist z.B. der Trivialfall 0000000000000...
ZitierenPost melden
Antwort#5
Etwas in dieser Richtung hatte ich mal vor längerer Zeit bearbeitet. Dazu hatte ich mit einem C-Programm vor den Binärfile mit (vermuteten) headerlosen Audiosamples einen wav-Header (siehe unten) vorgeschaltet und darin die einzelnen Parameter nacheinander auf die infrage kommenden Werte gesetzt und dann jeweils das Ergebnis mit CoolEdit angesehen und angehört.
MfG -kln
----------------------------- Encls. ---------------------------------------
/* Format Header *.wav-File 23may98 -Nl */
struct RIFF_Chunk{
char riff[4];
unsigned long total_length;
char wav[4];
};
struct FORMAT_Chunk {
char fmt[4];
unsigned long Format_length;
unsigned short always;
unsigned short ch_no;
unsigned long sample_rate;
unsigned long Bps;
unsigned short Bpsmpl;
unsigned short bpsmpl;
};
struct DATA_Chunk {
char data[4];
unsigned long data_length;
ZitierenPost melden
Antwort#6
Hm, also DAS ist natürlich ein Problem, ich ging davon aus, daß Du weisst, ob ein wav vorliegt. Aber was für ein Datenmüll ist das denn? Wenn der Controller Unsinn gemacht hat, hast Du eh verloren. Da stimmen Sektoren u.U: nicht mehr. Das gibt ein Geschnippsel wie bei den Stasi-Akten.
ZitierenPost melden
Antwort#7
Es geht einfacher und zwar als *.raw umbennen
(wieso sind Programme da eilg. immer so zickig? Wieso kann ein Wave-file nicht *.tif heissen? Man braucht soch nur mal kurz reinzuschauen.)
und in Wavelab öffnen.
Da aber auch viel Mist dabei ist möchte ich die Erkennung nicht manuell machen.
ZitierenPost melden
Antwort#8
Ach Du Armer!
Gerade haben wir erst von den HDs gesprochen...
Vertraue Deinem PC Daten an und Du bist verloren.
Mein Beileid,
Hermann
ZitierenPost melden

Deine Antwort

Du kannst ohne Anmeldung schreiben.