我正在尝试将 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 -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
答案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 -