2017-06-19 3 views
1

Wenn eine Datei WAV Decodierung ich in der Lage bin aus dem Header lesen folgende Werte (formatiert ordentlich):WAV-Datei-Header eine falsche Größe Berichts

Channels: 2 
BitDepth: 16 
SampleRate: 44100 
FileSize: 907346 
FileType: RIFF 
AudioFileType: WAVE 
data: [...] 
PCM: 0 

Als ich dies in eine OpenAL laden Puffer und versuchen zu spielen es zurück, der Ton spielt nicht. Aber nach vielen Optimierungen konnte ich den Sound wiedergeben, wenn ich die FileSize fest auf 907300 codiere.

Das brachte mich auf den Gedanken, dass OpenAL höchstwahrscheinlich mich braucht, um den Header zu versetzen, wenn ich anfange, in die Beispieldaten zu laden. Die Header-Größe einer WAV-Datei beträgt jedoch nur 44 Bytes. Ich gehe auch davon aus, dass ein Offset von nur 46 Byte keine wirklich langfristige Lösung ist. Woher kommen die zusätzlichen 2 Bytes?

Update:

Getestet habe ich eine andere Datei, die ich von dem Internet heruntergeladen, anstatt von LMMS zu retten. Es spielt überhaupt nicht, sogar nach dem Versetzen um 44 oder 46 Bytes. Sein Header ist identisch mit Ausnahme von FileSize: 1242448

Antwort

2

Es dreht sich LMMS beschlossen, es nicht .WAV-Datei-Header speichern möchten, wie sie sollen. Hatte einen kurzen Blick in die .wav-Datei mit dhex und die Kopfzeile enthält unerwünschte Informationen. Die ganze Header sieht wie folgt aus:

RIFFR...WAVEfmt ........D...........LIST&...INFO 
ISFT....LMMS (libsndfile-1.0.27)..data.......... 

ich schließlich mit bfxr getestet und Bosca Ceoil und alle ihre Klänge zu spielen und die Header schön aussehen eine ordentlich.

Ich hoffe, diese Informationen werden für jemanden nützlich sein.

+0

LMMS * speichert * .wav-Dateien ordnungsgemäß. Das Problem ist, dass es einen Abschnitt mit Beschreibungen hinzufügt, der besagt, dass die Datei mit LMMS oder ähnlichem erstellt wurde. Was auch immer Sie verwenden, um die .wav's zu analysieren, scheint nicht zu funktionieren. Die Lösung wäre, einen besseren Parser zu finden oder einen Audioeditor wie Audacity zu verwenden, um die Beschreibung zu bearbeiten. – HolyBlackCat

+0

Der Punkt ist, dass alles andere als LMMS scheint gut zu parsen. Also füge ich dem Feature-Backlog meines Parsers LMMS-Unterstützung hinzu. @HolyBlackCat eine Chance, Sie wissen, wie diese LMMS WAV-Header zu analysieren? –

+0

Es funktioniert wahrscheinlich für die meisten .wav-Dateien, da die meisten Anwendungen keine zusätzlichen Informationen in sie schreiben. Einfaches Parsen von .vaw gemäß der Spezifikation sollte ausreichen, um mit diesen Dateien umzugehen. – HolyBlackCat

Verwandte Themen