Answers.Body: <p>Actually, ffmpeg writes them correctly. Wave64 is a wav extension by Sony, and ffmpeg Wave64 with float samples play fine in Vegas Pro which reads these files using a plugin by Sony.</p>
  <p>If you change the 65th and 66th bytes (0x40 &amp; 0x41) to <code>03 00</code>, they open fine in Audacity.</p>
  <p>Alternatively you can write to rf64, which Audacity plays fine straight out of ffmpeg.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-11-14T19:10:30.927Z
Answers.Text: Thank you for the clarification. So, after all, there was a 'magic' parameter that would solve my problem: RF64 will be the way i shall take.
    
  Thank you very much!
Answers.UserDisplayName: Shuffle
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-11-14T17:52:03.397Z
Answers.LastActivityDate: 2021-11-14T17:52:03.397Z
Answers.UserDisplayName: Gyan
Body: <p>I have a problem with FFmpeg when writing a <code>pcm_f32le</code> stream to a Wave64 file format (.w64).</p>
  <p>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.</p>
  <p>Wave64 files with float32 samples created with Ardour do not have this problem, so this is not a codec to format incompatibility.</p>
  <p>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 <code>pcm_s16le</code>, <code>pcm_s24le</code> or <code>pcm_s32le</code> stream. Only <code>pcm_f32le</code> into .w64 seems problematic from what I tested (could not check <code>pcm_f64le</code>).</p>
  <p>I tried using a &quot;volume&quot; filter at the end of the chain, to no avail.</p>
  <p>You can get a MWE using the following commands:</p>
  <pre><code>ffmpeg -f lavfi -i &quot;sine=frequency=440:duration=5&quot; test.wav
  ffmpeg -i test.wav -c:a pcm_f32le test.w64
  </code></pre>
  <p>The resulting .w64 seems valid (FFplay, Audacity and Ardour can play it back), but only FFplay produces the expected audio.</p>
  <p>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.</p>
  <p>I'm hoping there's an argument to FFmpeg that I missed... though <code>ffmpeg -h muxer=w64</code> did not help, and the resulting .w64 file's codec is reported correctly as IEEE 32-bit by MediaInfo :-(</p>
  <p>Please excuse me if this is not the right place to ask this question (I read on StackOverflow that &quot;[q]uestions about interactive use of the command line tool should be asked on Super User or Video Production&quot;).</p>
  
Tags: <ffmpeg><audio><conversion>
Title: FFmpeg seems to write bad .w64 files for pcm_f32le streams
UserDisplayName: Shuffle
ThreadText: # FFmpeg seems to write bad .w64 files for pcm_f32le streams
  
  (Asked by: username_0 on 2021-11-14)
  
  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").
  
  **Tags:** ffmpeg, audio, conversion
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2021-11-14. Score: 2 | Accepted answer
  
  Actually, ffmpeg writes them correctly. Wave64 is a wav extension by Sony, and ffmpeg Wave64 with float samples play fine in Vegas Pro which reads these files using a plugin by Sony.
  
  If you change the 65th and 66th bytes (0x40 & 0x41) to `03 00`, they open fine in Audacity.
  
  Alternatively you can write to rf64, which Audacity plays fine straight out of ffmpeg.
  
  > **Comments:**
  > **username_0**: Thank you for the clarification. So, after all, there was a 'magic' parameter that would solve my problem: RF64 will be the way i shall take.    Thank you very much!  
  
  ---
  
  