Контейнер WAV - это просто заголовок файла. Он не поддерживает фреймы переменной длины, требуемые Vorbis. «OggVorbis ACM» на самом деле является Vorbis в контейнере Ogg (для обеспечения кадрирования), поэтому его можно использовать в устаревшей звуковой платформе Windows ACM, которая не поддерживает требуемое кадрирование. Это также позволяет использовать его в файлах WAV, хотя это не имеет особого смысла, поскольку вместо этого можно просто сохранить файл .ogg.
ffmpeg не реализует и не распознает этот нестандартный WAV-кодек «OggVorbis ACM». Вы можете использовать программу, которая распознает это, например Audacity, или вы можете просто удалить WAV-заголовок, чтобы извлечь Ogg Vorbis, который находится внутри.
Допустимые потоки Ogg начинаются с того OggS
, что отмечает начало каждой страницы Ogg в файле. В предоставленном вами файле перед первым 66 байтов OggS
. По крайней мере, в Mac / Linux / Unix вы можете удалить первые 66 байтов с помощью команды:
tail -c +67 sample.wav > sample.ogg
В вашем файле встроенный Ogg фактически содержит два потока, что, по-видимому, является попыткой дополнить его до фиксированной скорости передачи данных. Второй поток имеет неизвестный кодек и, похоже, сбивает с толку некоторых игроков. Например, Firefox воспроизводит первый поток (игнорируя второй), но Chrome останавливается, когда он встречает второй поток. У него также есть другие нарушения спецификаций, в том числе отсутствие eos (конец потока) (возможно, из-за того, что вы не опубликовали полный файл).
Если вы извлекаете первый поток битов (vorbis), он, кажется, работает правильно. Вот некоторые инструменты, которые должны быть в состоянии извлечь первый поток битов:
- oggsplit (работает с файлами wav или ogg)
- oggSplit от Ogg Video Tools (работает с файлом ogg)
- oggz-rip (однако эта программа не любит ваш файл, вероятно, из-за других нарушений спецификации)
Может быть, лучше просто прочитать файл WAV с помощью программы, такой как Audacity, и перекодировать его, чтобы убедиться, что он не содержит никаких других странностей.