I have a problem with FFmpeg when writing a pcm_f32le
stream to a Wave64 file format (.w64).
Basically, only FFplay can read the file back correctly. I tried with VLC, but it seems it cannot read any .w64 files I have, then Audacity and Ardour can read it but it is heavily distorted.
Wave64 files with float32 samples created with Ardour do not have this problem, so this is not a codec to format incompatibility.
Moreover, it works fine when writing to a usual WAV file, but that defeats the purpose of Wave64 which I require. It also works fine when writing a Wave64 embedding a pcm_s16le
, pcm_s24le
or pcm_s32le
stream. Only pcm_f32le
into .w64 seems problematic from what I tested (could not check pcm_f64le
).
I tried using a "volume" filter at the end of the chain, to no avail.
You can get a MWE using the following commands:
ffmpeg -f lavfi -i "sine=frequency=440:duration=5" test.wav
ffmpeg -i test.wav -c:a pcm_f32le test.w64
The resulting .w64 seems valid (FFplay, Audacity and Ardour can play it back), but only FFplay produces the expected audio.
This hints me -- but I might be wrong -- that it may simply be a header-related problem, but I don't know how to solve it, and hand-editing is not an option (except for debugging purposes) since it eventually has to be done on many files by people other than me.
I'm hoping there's an argument to FFmpeg that I missed... though ffmpeg -h muxer=w64
did not help, and the resulting .w64 file's codec is reported correctly as IEEE 32-bit by MediaInfo :-(
Please excuse me if this is not the right place to ask this question (I read on StackOverflow that "[q]uestions about interactive use of the command line tool should be asked on Super User or Video Production").