ffmpeg to convert from flac to wav

2

I need to convert a flac file to a wav file without changing sample rate and bit depth. As far as I know changing these properties may distort the audio, so how do i specify them not to be changed?

Also, is there any way to prevent metadata to be written to the output file?

Edit: Apparently this is an XY Problem, I'm sorry, I'm new here. My problem is that I don't want to install flac on my OS X, because I'm trying to sandbox everything I use, so I need a single executable file, such as ffmpeg. I'll try @slhck's suggestion and check whether sample rate and bit depth change.

Edit: ffmpeg only preserves sample rate. Bit depth needs to be set manually.

user3580089

Posted 2014-04-28T06:11:34.470

Reputation: 33

Here is a solution to convert FLAC to WAV from stackoverflow.

– None – 2014-06-20T04:04:40.110

Why do you want to use ffmpeg for the task? This sounds like a XY problem to me.

– a CVn – 2014-04-28T09:39:54.310

@MichaelKjörling Not sure, I personally use ffmpeg for everything, even if there's a flac CLI tool, or an x264 CLI encoder, etc. It's not unreasonable to assume that someone would want to use ffmpeg even if there are "native" tools. – slhck – 2014-04-28T09:50:08.917

@slhck I agree with the point you're making, but in this case I see nothing in the question to indicate why a non-ffmpeg solution wouldn't meet the OP's needs ("convert flac to wav without changing sample rate and bit depth"). The question isn't even explicit that using ffmpeg is necessary; it's only implicit in the question title. I think asking for the reason for the mention of ffmpeg is reasonable. – a CVn – 2014-04-28T09:58:01.990

Answers

3

ffmpeg will not change sample rate unless you tell it to (or the output codec does not support it, but then it will most probably fail). So this should be enough:

ffmpeg -i input.flac output.wav

ffmepg will however not preserve bit depth and default to 16-bit encoding, so if your input is 24 bit, you have to use:

ffmpeg -i input.flac -c:a pcm_s24le output.wav

As for removing metadata, see Strip metadata from all formats with FFmpeg -- you basically only add the -map_metadata -1 option.

slhck

Posted 2014-04-28T06:11:34.470

Reputation: 182 472

Is this really true? It seems to preserve the sample rate but converts 24-bit flac to 16-bit PCM (in WAV). – awy – 2020-02-21T16:06:55.473

@awy You are right. Not sure if that's a regression. – slhck – 2020-02-24T08:44:18.720

Is this in any way inferior to flac -d flacfile.flac? – Rajib – 2014-04-28T09:36:51.517

1@Rajib Not that I'm aware of, no. But I haven't tested it, so I can't give an authoritative answer here. – slhck – 2014-04-28T09:50:55.090

4

While it does not use ffmpeg as you indicate in the title that you want to do, to convert a FLAC file to .wav you can simply pass it through flac using the --decode (-d) switch.

flac --decode input.flac will produce input.wav as output, containing the same audio data.

You can add --no-keep-foreign-metadata to make flac throw away any non-audio data in the input. (It is the opposite of --keep-foreign-metadata Save/restore WAVE or AIFF non-audio chunks.)

a CVn

Posted 2014-04-28T06:11:34.470

Reputation: 26 553