Как воспроизвести файл 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: unsigned
    • 16: 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 может воспроизводить и записывать аудиофайлы на большинстве платформ.

Другие вопросы по тегам