Can ffmpeg convert audio from raw PCM to WAV? - audio

I can convert wav file to pcm
ffmpeg -i file.wav -f s16le -acodec pcm_s16le file.pcm
How can I revert this operation?

The wav container just adds a simple header to the raw PCM data. The header includes the format, sample rate, and number of channels. Since the raw PCM data does not include this information, you will need to specify it on the command line. Options are specified before the file they apply to, so options before the input file may be used to specify the format of the input file, and options after the input file and before the output file may be used to specify the desired format of the output file. If you want the same bits/sample, sample rate, and number of channels in the output file then you don't need any output options in this case; the wav container format is already indicated by the file extension.
Example to convert raw PCM to WAV:
ffmpeg -f s16le -ar 44.1k -ac 2 -i file.pcm file.wav
-f s16le … signed 16-bit little endian samples
-ar 44.1k … sample rate 44.1kHz
-ac 2 … 2 channels (stereo)
-i file.pcm … input file
file.wav … output file

Be careful with RAW data format
-f u8 is unsigned 8 bit,
s16 is signed just in case there are others
$ ffmpeg -formats | grep PCM
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

ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav

The following code should work:
ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav

Related

Is there some way to configure ffmpeg to include support for signed 24-bit WAV output?

24-bit sample sizes are not at all uncommon for PCM/WAV data, so I was surprised to see this:
Invalid sample format 's24'
... when I ran this:
ffmpeg -i input.oga -y -f wav -ar 44100 -sample_fmt s24 -ac 2 output.wav
When I look at the ffmpeg FAQ page it says that it doesn't support signed 24-bit sample sizes.
Fair enough, but I'm having a hard time accepting that this very powerful tool which supports an impressively large number of formats is somehow missing support for this really common sample width.
All I can think of is that maybe it's a build configuration issue.
So this question is...
Is there some way to configure ffmpeg to include support for signed 24-bit WAV output?
There is no sample format to compactly store 24-bit samples, but they can be stored in 32-bits with padding. For that, select a 24-bit PCM encoder
ffmpeg -i input.oga -y -f wav -ar 44100 -c:a pcm_s24le -ac 2 output.wav
Run ffmpeg -encoders | grep 24 to get a list of all 24-bit encoders.

Audio File conversion format, bitrate- from wav to aac

I have an audio file with the following properties.
File Name : A.wav
Format: WAV
Type : PCM 32 bit floating little endian
Bitrate : 2048 kbps
Frequency:32000 Khz
Channels : 2
I want to convert the above file to this format.
Format: AAC
Type : Advance audio encoding
Bitrate : 384 kbps
Frequency:32000 Khz
Channels : 2
I have been experimenting with ffmpeg but unsuccessful.
ffmpeg -i A.wav -acodec aac -ab 384k B.aac
How do I do this?

convert MOV to mp4 using transcode

I want to convert a MOV from my Casio cam to mp4 using transcode. Why transcode? Because I also want to deshake the video in the same step.
When I use
ffmpeg -i in.MOV out.mp4
it works. When using
transcode -J stabilize -i in.MOV
or
transcode -J transform -i in.MOV -y ffmpeg -F mpeg4 -o out.mp4
I get hundreds of these errors:
[ffmpeg_audio] Error: avcodec_open2 failed
[adpcm_ima_wav # 0x1f7f180] Only 4-bit ADPCM IMA WAV files are supported
This looks to me as if transcode uses ffmpeg internally.
I could use ffmpeg to make it mp4 first and then use transcode to stabilize the video, but then it would be re-encoded twice which I would like to avoid.
This is what mplayer says about my MOV file:
MPlayer2 2.0-701-gd4c5b7f-2ubuntu2 (C) 2000-2012 MPlayer Team
Cannot open file '/home/koem/.mplayer/input.conf': No such file or directory
Failed to open /home/koem/.mplayer/input.conf.
Cannot open file '/etc/mplayer/input.conf': No such file or directory
Failed to open /etc/mplayer/input.conf.
Playing 1-original.MOV.
Detected file format: QuickTime / MOV (libavformat)
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (adpcm_ima_wav), -aid 0, -alang eng
Clip info:
major_brand: qt
minor_version: 537921536
compatible_brands: qt caqv
creation_time: 2017-01-02 23:31:38
Load subtitles in .
Failed to open VDPAU backend libvdpau_i965.so: cannot open shared object file: No such file or directory
[vdpau] Error when calling vdp_device_create_x11: 1
[ass] auto-open
Selected video codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [libavcodec]
Selected audio codec: ADPCM IMA WAV [libavcodec]
AUDIO: 44100 Hz, 2 ch, s16le, 352.8 kbit/25.00% (ratio: 44100->176400)
AO: [pulse] 44100Hz 2ch s16le (2 bytes per sample)
Starting playback...
VIDEO: 1920x1080 29.970 fps 15940.0 kbps (1992.5 kB/s)
VO: [xv] 1920x1080 => 1920x1080 Planar YV12
Colorspace details not fully supported by selected vo.
A: 1.1 V: 1.1 A-V: -0.000 ct: 0.000 0/ 0 16% 8% 1.6% 0 0
Exiting... (Quit)
How can I make it work with transcode without using ffmpeg first?
FFmpeg has a deshake as well as a stabilization filter. Get a new binary if yours doesn't.
To continue with your existing binaries, run
ffmpeg -i in.MOV -vcodec copy out.mp4
This will skip video re-encoding.

FFMPEG Bit Rate as 16Bit for Audio Conversion

I am using FFMPEG Audio Converter to convert the file format. At Present it bit rate is 176.4 kbit/s, so it file size to big.
I want to convert it as possible at low bit rate but unable to find any solution.
I use below command line to convert the file
ffmpeg.exe -i "Audio Input FilePath" "Audio Output FilePath"
You can define with -b:a the target bitrate so try for example:
ffmpeg.exe -i "Audio Input FilePath" -b:a 64k "Audio Output FilePath"

getting error while converting wav to amr using ffmpeg

I am using ffmpeg to convert amr to wav and wav to amr.Its successfully converting amr to wav but not viceversa. As ffmpeg is supporting amr encoder decoder, its giving error.
ffmpeg -i testwav.wav audio.amr
Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height
You can try setting the sample rate and bit rate.
Amr supports only 8000Hz sample rate and 4.75k, 5.15k, 5.9k, 6.7k, 7.4k, 7.95k, 10.2k or 12.2k bit rates:
ffmpeg -i testwav.wav -ar 8000 -ab 12.2k audio.amr

Resources