Я хочу использовать lame для кодирования mp3-файлов, но вместо того, чтобы записывать его непосредственно в файл, я хочу передать его в другую программу, которая в конечном итоге запишет его куда-нибудь. Проблема в том, что если lame обнаруживает, что его вывод является потоком, он не записывает заголовок VBR, и проигрыватели неправильно определяют длину файла. Например, если я сделаю это, то полученный файл будет неправильным:
lame infile.wav - >outfile.mp3
Я попробовал следующий трюк:
lame infile.wav /dev/stdout >outfile.mp3
Сначала это работает, но только если stdout напрямую перенаправлен в файл. Следующий случай не работает:
lame infile.wav /dev/stdout | cat >outfile.mp3
Если я использую ffmpeg (или avconv) в качестве внешнего интерфейса для lame, у меня точно такая же проблема.
Есть ли способ сказать lame, что я хочу, чтобы он записывал заголовок VBR, даже если он думает, что пишет в поток?