Graças ao aviso da resposta da Miati , percebi:
ffmpeg -i file.m4a -f wav -acodec pcm_s16le -ac 2 - | \
lame -m s -b 320 -q 0 --replaygain-accurate - file.mp3
O formato precisa ser definido na saída para o stdout.
Estou tentando converter um arquivo AAC em WAV para canalizar a saída para o LAME. Eu estou procurando fazer isso, especificamente:
find . -maxdepth 1 -type f -iname "*.m4a" | sort | while read file; do
ffmpeg -i "$file" -acodec pcm_s16le -ac 2 - | lame -b 256 -m s -q 0 - output.mp3
done
Eu recebo o seguinte erro:
Unable to find a suitable output format for 'pipe:'
Warning: unsupported audio format
Existe uma maneira de especificar o -acodec
para a saída? Lendo a manpage agora.
Eu sei que posso converter para MP3 dentro do FFMPEG, mas não é isso que eu quero fazer;)
Graças ao aviso da resposta da Miati , percebi:
ffmpeg -i file.m4a -f wav -acodec pcm_s16le -ac 2 - | \
lame -m s -b 320 -q 0 --replaygain-accurate - file.mp3
O formato precisa ser definido na saída para o stdout.
O que acontece quando você corre?
ffmpeg -i file.m4a -acodec pcm_s16le -ac 2 file.wav
Funcionou bem para mim.
Se ocorrer um erro, o erro anterior faz sentido, você pode não ter suporte para decodificar aac ou codificar wav. Em seguida, o pipe falha porque não sabe como formatá-lo como. As possíveis soluções nesse ponto seriam compilar o ffmpeg com suporte para os formatos (meu palpite aac como eu acredito ser não-livre)
Tente usar -f De acordo com esta página , quando a saída é definida como stdout (ou -), o formato do contêiner deve ser definido manualmente. O post diz para usar matroska (ou container .mkv)
ffmpeg -i file.m4a -acodec pcm_s16le -f matroska -ac 2 -
Este é um erro comum, FFmpeg é ganancioso em stdin. Se você for executar o FFmpeg em um loop de leitura, será necessário desativá-lo
ffmpeg -nostdin
Tags ffmpeg