How to play a PCM file on an UNIX system?
Are you sure you're getting valid PCM data? What type of PCM are you getting?
Basic PCM is used on audio CDs and in WAV files ripped from CDs; it should be playable by just about anything. Specifically, it is 16-bit (per sample), 44.1 kHz (sample rate), stereo (2 channels). Playing this kind of PCM is as simple as cat file.pcm > /dev/audio
(or /dev/dsp
or another appropriate audio device).
The libmad homepage indicates that libmad may default to outputting 24-bit PCM, and your player software could be confused by it if expecting the standard 16-bit PCM. If you haven't already, check your program's libmad usage against the madlld
(libmad low-level API tutorial) to make sure you're getting the correct output from the library.
Since PCM data doesn't include headers like a WAV file does, you may need to specify the PCM format for a program to load the file correctly. Audacity should be able to handle any standard PCM format.
It's also possible you're getting invalid PCM output from libmad
, due to a bug in the library or due to improper use of the library by your code.
`ffplay
Tested on 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
: unsigned16
: 16 bits per valuebe
: 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