MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Wav-формат. Почему размер данных не кратен размеру сэмпла?"
Answer 804823
потому что в PCM, если верить источнику, не должно быть никаких дополнительных данных между BitsPerSample и data
Вероятно, слишком поздно, но источник врет. Во-первых, PCM - это способ кодирования, а не формат файла (формат называется RIFF). Во-вторых, согласно спецификации данного формата, он может расширяться в последующих версиях добавлением новых блоков данных (в любом месте между старыми блоками), поэтому приложения для его считывания должны пропускать неизвестные им блоки, а не падать с ошибкой при их появлении.
В данном случае, между заголовком файла и блоком DATA содержится блок INFO, который содержит текстовые сведения о композиции (отлично заметные кракозябры в HEX-редакторе).
Таким образом, правильный алгоритм считывания блоков RIFF-файла выглядит как-то так:
- Считать SubchunkID и SubchunkSize
- Если SubchunkID - не то, что ожидалось, пропустить SubchunkSize байтов и вернуться на шаг 1
- Иначе, считать и обработать массив байтов, равный SubchunkSize
Информацию о формате и ссылки на нормальную документацию можно найти здесь: Audio File Format Specifications
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.