audio types

Raw audio in FFmpeg can take several different "forms"

for instance:

  • pcm_s16le PCM means "traditional wave like format" (raw bytes, basically). 16 means 16 bits per sample, "le" means "little endian", s means "signed", u would mean "unsigned"

You can see a list, by running a command like this on your own local box:

$ ffmpeg -formats | grep PCM
ffmpeg version N-44123-g5d55830 Copyright (c) 2000-2012 the FFmpeg developers
 DE alaw            PCM A-law
 DE f32be           PCM 32-bit floating-point big-endian
 DE f32le           PCM 32-bit floating-point little-endian
 DE f64be           PCM 64-bit floating-point big-endian
 DE f64le           PCM 64-bit floating-point little-endian
 DE mulaw           PCM mu-law
 DE s16be           PCM signed 16-bit big-endian
 DE s16le           PCM signed 16-bit little-endian
 DE s24be           PCM signed 24-bit big-endian
 DE s24le           PCM signed 24-bit little-endian
 DE s32be           PCM signed 32-bit big-endian
 DE s32le           PCM signed 32-bit little-endian
 DE s8              PCM signed 8-bit
 DE u16be           PCM unsigned 16-bit big-endian
 DE u16le           PCM unsigned 16-bit little-endian
 DE u24be           PCM unsigned 24-bit big-endian
 DE u24le           PCM unsigned 24-bit little-endian
 DE u32be           PCM unsigned 32-bit big-endian
 DE u32le           PCM unsigned 32-bit little-endian
 DE u8              PCM unsigned 8-bit

Basically these represent all the raw audio type combination possibilities.

FFmpeg can take input of raw audio types by specifying the type on the command line. For instance, to convert a "raw" audio type to a ".wav" file:

ffmpeg -f pcm_s32le input_filename.raw output.wav

You can specify number of channels, etc. as well, ex:

ffmpeg -f u16le -ar 44100 -ac 1 -i input.raw output.wav

The default for encoding .wav files it uses is pcm_s16le, you can change it by specifying an "acodec" and using the .wav file extension:

ffmpeg -i input -acodec pcm_s32le output.wav

Which will create a .wav file containing audio with that codec (not a raw file) (there are also other containers that can contain raw audio packets, like pcm_bluray). If you want to create a raw file, don't use the ".wav" ending:

ffmpeg -i input -f s16le -acodec pcm_s16le output.raw

You can tell what encoding by this part of your output, if it says ", s16le" then it's raw, it it says ", wav," then it's wav.

> >> Output #0, s16le, to 'out.2.raw'

Last modified 21 months ago Last modified on Jun 24, 2015, 1:23:34 PM