Как воспроизвести файл PCM в системе UNIX?
Я пытаюсь понять, как использовать 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
: unsigned16
: 16 бит на значениеbe
: big-endian
-ar
: частота дискретизации-ac
: количество каналов
play
варианты: сравнить значения;-)
Пример того, как создать свой собственный .raw
файлы для воспроизведения: https://stackoverflow.com/questions/732699/how-is-audio-represented-with-numbers/36510894
Смотрите также: https://stackoverflow.com/questions/20314739/how-to-play-pcm-sound-file-in-ubuntu
Возможно, вы можете использовать такой инструмент, как Sox
SoX - это кроссплатформенная (Windows, Linux, MacOS X и т. Д.) Утилита командной строки, которая может конвертировать различные форматы компьютерных аудиофайлов в другие форматы. Он также может применять различные эффекты к этим звуковым файлам, и, в качестве дополнительного бонуса, SoX может воспроизводить и записывать аудиофайлы на большинстве платформ.