Como reproduzir um arquivo PCM em um sistema UNIX?

4

Estou tentando descobrir como usar libmad com C. O problema é que o libmad converte arquivos de áudio para arquivos .pcm e não consigo encontrar uma maneira de reproduzir esses arquivos. Não há um player .pcm direto, e o Audacity trava toda vez que tento abrir o arquivo pcm com ele. Alguém tem alguma experiência com isto? Eu estou aberto para converter esses arquivos pcm para arquivos WAV ou algum outro formato, mas novamente não há nenhuma maneira simples de fazer isso (pelo menos eu não encontrei um).

    
por Cookie Monster 29.11.2009 / 19:37

3 respostas

2

Tem certeza de que está recebendo dados PCM válidos? Que tipo de PCM você está recebendo?

PCM básico é usado em CDs de áudio e em arquivos WAV copiados de CDs; deve ser jogável por praticamente qualquer coisa. Especificamente, é de 16 bits (por amostra), 44,1 kHz (taxa de amostragem), estéreo (2 canais). Jogar este tipo de PCM é tão simples quanto cat file.pcm > /dev/audio (ou /dev/dsp ou outro dispositivo de áudio apropriado).

A homepage da libmad indica que a libmad pode usar como padrão a saída do PCM de 24 bits, e o software do player pode ficar confuso por ele se espera o PCM padrão de 16 bits. Se você ainda não o fez, verifique o uso de libmad do seu programa com o madlld (tutorial de API de baixo nível do libmad ) para garantir que você está obtendo a saída correta da biblioteca.

Como os dados do PCM não incluem cabeçalhos como um arquivo WAV, talvez seja necessário especificar o formato PCM para que um programa carregue o arquivo corretamente. O Audacity deve ser capaz de lidar com qualquer formato PCM padrão.

Também é possível que você esteja recebendo uma saída PCM inválida de libmad , devido a um bug na biblioteca ou devido ao uso indevido da biblioteca pelo seu código.

    
por 29.11.2009 / 21:33
2

Ubuntu Linux 15.10

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

ou:

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

ffplay opções:

  • -autoexit : sair do reprodutor quando o fluxo terminar
  • -f : formato:
    • u : sem assinatura
    • 16 : 16 bits por valor
    • be : big-endian
  • -ar : frequência da amostra
  • -ac : número de canais

play options: compare os valores; -)

Exemplo de como gerar seus próprios arquivos .raw para reproduzir: link

Veja também: link

    
por 09.04.2016 / 01:07
0

Talvez você possa usar uma ferramenta como o Sox

SoX is a cross-platform (Windows, Linux, MacOS X, etc.) command line utility that can convert various formats of computer audio files in to other formats. It can also apply various effects to these sound files, and, as an added bonus, SoX can play and record audio files on most platforms.

    
por 29.11.2009 / 20:26

Tags