Как воспроизвести файл PCM в системе UNIX?

6392
Cookie Monster

Я пытаюсь понять, как использовать libmad с C. Проблема в том, что libmad преобразует аудиофайлы в файлы .pcm, и я не могу найти способ воспроизвести эти файлы. Простого плеера .pcm нет, и Audacity вылетает каждый раз, когда я пытаюсь открыть файл pcm. Есть ли у кого-нибудь опыт с этим? Я открыт для преобразования этих файлов PCM в файлы WAV или другой формат, но опять же нет простого способа сделать это (по крайней мере, я не нашел один).

4

3 ответа на вопрос

2
quack quixote

Вы уверены, что получаете действительные данные 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за ошибки в библиотеке или из-за неправильного использования библиотеки вашим кодом.

Это привело меня к правильному ответу. Хотя Audacity потерпел крах, когда я попытался открыть файл PCM, я смог успешно импортировать его. Я просто пошел в Проект> Импорт необработанных данных. Я оставил его в настройках по умолчанию (подписал 16-битный PCM, little-endian, стерео, на 44 кГц) и вуаля! Спасибо. Cookie Monster 14 лет назад 1
Для `/ dev / audio` могут потребоваться дополнительные пакеты, а` / dev / sdn` может быть не очень простым в использовании: http://unix.stackexchange.com/questions/13732/generating-random-noise-for-fun- в-DEV-SND Ciro Santilli 新疆改造中心 六四事件 法轮功 8 лет назад 0
2
Ciro Santilli 新疆改造中心 六四事件 法轮功

Ubuntu Linux 15.10

sudo apt-get install ffmpeg ffplay -autoexit -f u16be -ar 44100 -ac 1 in.raw 

or:

sudo apt-get install play play -b 16 --endian big -e unsigned -r 44100 in.raw 

ffplay options:

  • -autoexit: exit player when stream ends
  • -f: format:
    • u: unsigned
    • 16: 16 bits per value
    • be: big-endian
  • -ar: sample frequency
  • -ac: number of channels

play options: compare the values ;-)

Example of how to generate your own .raw files to play with: https://stackoverflow.com/questions/732699/how-is-audio-represented-with-numbers/36510894#36510894

See also: https://stackoverflow.com/questions/20314739/how-to-play-pcm-sound-file-in-ubuntu

0
Sathya

Возможно, вы можете использовать такой инструмент, как Sox

SoX - это кроссплатформенная (Windows, Linux, MacOS X и т. Д.) Утилита командной строки, которая может конвертировать различные форматы компьютерных аудиофайлов в другие форматы. Он также может применять различные эффекты к этим звуковым файлам, и, в качестве дополнительного бонуса, SoX может воспроизводить и записывать аудиофайлы на большинстве платформ.

Похожие вопросы