FFMPEGを使用してWAVに変換してLAMEに転送しますか?

FFMPEGを使用してWAVに変換してLAMEに転送しますか?

出力をLAMEにパイプできるように、AACファイルをWAVに変換しようとしています。私は具体的に次のことをしようとします。

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

次のエラーが発生します。

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

-acodec出力を指定する方法はありますか?ここでマンページを読んでください。

FFMPEGからMP3に変換できることを知っていますが、そうしたくありません。 ;)

答え1

さんのヒントありがとうございます。ミアティの答え、私は次のことを考えました。

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

stdoutに出力するときはフォーマットを設定する必要があります。

答え2

これは一般的な間違いです。 FFmpegはstdinに欲があります。読み取りループでFFmpegを実行している場合は、オフにする必要があります。

ffmpeg -nostdin

はい

答え3

走るとどうなりますか?

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 -

関連情報