Eu quero usar coxo para codificar arquivos mp3, mas em vez de escrevê-lo diretamente para um arquivo eu quero canalizá-lo em outro programa que acabará por escrevê-lo em algum lugar. O problema é que, se o lame detecta que sua saída é um fluxo, ele não grava o cabeçalho VBR e os jogadores calculam o comprimento do arquivo errado. Por exemplo, se eu fizer isso, o arquivo resultante estará errado:
lame infile.wav - >outfile.mp3
Eu tentei o seguinte truque:
lame infile.wav /dev/stdout >outfile.mp3
Parece funcionar primeiro, mas apenas se o stdout for diretamente redirecionado para um arquivo. O caso a seguir não funciona:
lame infile.wav /dev/stdout | cat >outfile.mp3
Se eu usar ffmpeg (ou avconv) como um front end para lame, eu tenho exatamente o mesmo problema.
Existe alguma maneira de dizer lame que eu quero escrever o cabeçalho VBR mesmo se ele acha que está escrevendo para um fluxo?