Я пытаюсь понять, как использовать libmad с C. Проблема в том, что libmad преобразует аудиофайлы в файлы .pcm, и я не могу найти способ воспроизвести эти файлы. Прямого проигрывателя .pcm нет, и Audacity вылетает каждый раз, когда я пытаюсь открыть файл pcm. Есть ли у кого-нибудь опыт с этим? Я открыт для преобразования этих файлов PCM в файлы WAV или другой формат, но опять же нет простого способа сделать это (по крайней мере, я не нашел один).
3 ответа
Вы уверены, что получаете действительные данные PCM? Какой тип ПКМ вы получаете?
Основной PCM используется на аудио CD и в файлах WAV, скопированных с CD; это должно быть играбельно для всего. В частности, это 16-битный (на выборку), 44,1 кГц (частота дискретизации), стерео (2 канала). Воспроизвести этот тип PCM так же просто, как cat file.pcm > /dev/audio
(или /dev/dsp
или другое подходящее аудиоустройство).
Домашняя страница libmad указывает, что libmad может по умолчанию выводить 24-битный PCM, и программное обеспечение вашего плеера может быть сбито с толку, если вы ожидаете стандартного 16-битного PCM. Если вы еще этого не сделали, проверьте использование libmad вашей программы с помощью madlld
(низкоуровневое руководство по API libmad), чтобы убедиться, что вы получаете правильный вывод из библиотеки.
Так как данные PCM не включают заголовки, как WAV-файл, вам может потребоваться указать формат PCM для программы, чтобы загрузить файл правильно. Audacity должен уметь обрабатывать любой стандартный формат PCM.
Также возможно, что вы получаете неверный вывод PCM из libmad
из-за ошибки в библиотеке или из-за неправильного использования библиотеки вашим кодом.
Ubuntu Linux 15.10
sudo apt-get install ffmpeg
ffplay -autoexit -f u16be -ar 44100 -ac 1 in.raw
или же:
sudo apt-get install play
play -b 16 --endian big -e unsigned -r 44100 in.raw
ffplay
:
-autoexit
: выход из проигрывателя, когда заканчивается поток-f
: формат:u
: без знака16
: 16 бит на значениеbe
: big-endian
-ar
: частота дискретизации-ac
: количество каналов
варианты play
: сравните значения ;-)
Пример создания собственных файлов .raw
для воспроизведения: https://stackoverflow.com/questions/732699/how-is-audio-represented-with-numbers/36510894#36510894
Смотрите также: https://stackoverflow.com/questions/20314739/how-to-play-pcm-sound-file-in-ubuntu
Возможно, вы можете использовать такой инструмент, как Sox
SoX - это кроссплатформенная (Windows, Linux, MacOS X и т.д.) Утилита командной строки, которая может конвертировать различные форматы компьютерных аудиофайлов в другие форматы. Он также может применять различные эффекты к этим звуковым файлам, и, в качестве дополнительного бонуса, SoX может воспроизводить и записывать аудиофайлы на большинстве платформ.