![使用 FFMPEG 转换为 WAV 以将其传输到 LAME 中?](https://linux22.com/image/35455/%E4%BD%BF%E7%94%A8%20FFMPEG%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%20WAV%20%E4%BB%A5%E5%B0%86%E5%85%B6%E4%BC%A0%E8%BE%93%E5%88%B0%20LAME%20%E4%B8%AD%EF%BC%9F.png)
我正在尝试将 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 -