I'm finding that when LAME writes to stdout, it produces a different output than when it writes to a file. For example,
lame -V 2 --vbr-new "input.wav" ->output.mp3
and
lame -V 2 --vbr-new "input.wav" "output.mp3"
produce different versions of output.mp3. The audio appears to be ok, but the stdout file seems to be missing at least the VBR header and LAME header, so foobar reports the length of the file incorrectly. Anyone know why this is?
I'm using Windows and LAME 3.97.
Dynamic
Aug 29 2007, 08:27
I think stdout is meant principally for streaming. Otherwise try to use file output mode instead.
Also, if you think about it, the LAME/Xing VBR header is at the front of the file telling the decoder stuff to help with seeking etc. LAME can only know that by the end of the file, so it can't possibly include it when streaming the output to stdout if it only knows what it should have included once it has already reached the end of the stream.
You can use foobar's VBR right-click/Utils/Fix VBR header (or rescan MP3) to re-create the header.