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
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
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? –
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