Преобразовать в WAV, используя FFMPEG для трубы в LAME?

Я пытаюсь преобразовать файл AAC в WAV, чтобы передать вывод в LAME. Я хочу сделать это, в частности:

find . -maxdepth 1 -type f -iname "*.m4a" | sort | while read file; do ffmpeg -i "$file" -acodec pcm_s16le -ac 2 - | lame -b 256 -ms -q 0 - output.mp3 done 

Я получаю следующую ошибку:

 Unable to find a suitable output format for 'pipe:' Warning: unsupported audio format 

Есть ли способ указать -acodec для вывода? Чтение manpage теперь.

Я знаю, что я могу конвертировать в MP3 в FFMPEG, но это не то, что я хочу делать;)

Что происходит, когда вы бежите?

 ffmpeg -i file.m4a -acodec pcm_s16le -ac 2 file.wav 

Это сработало для меня.

Если это ошибка, предыдущая ошибка имеет смысл, у вас может не быть поддержки для декодирования aac или кодирования wav. Тогда труба терпит неудачу, потому что она не знает, как ее форматировать.
Возможные решения в этот момент состоят в том, чтобы скомпилировать ffmpeg с поддержкой форматов (моя догадка aac, поскольку я считаю, что она несвобода)

Попробуйте использовать -f. В соответствии с этой страницей , когда вывод задан как stdout (или -), формат контейнера должен быть установлен вручную. В сообщении говорится, что использовать matroska (или контейнер .mkv)

 ffmpeg -i file.m4a -acodec pcm_s16le -f matroska -ac 2 - 

Это распространенная ошибка, FFmpeg жадно на stdin. Если вы собираетесь запускать FFmpeg в цикле чтения, вам нужно отключить его

 ffmpeg -nostdin 

пример

Благодаря подсказке ответа Миати , я понял:

 ffmpeg -i file.m4a -f wav -acodec pcm_s16le -ac 2 - | \ lame -ms -b 320 -q 0 --replaygain-accurate - file.mp3 

Формат должен быть установлен при выводе на стандартный вывод.