![使用 XMP 批量转换模块文件](https://linux22.com/image/27704/%E4%BD%BF%E7%94%A8%20XMP%20%E6%89%B9%E9%87%8F%E8%BD%AC%E6%8D%A2%E6%A8%A1%E5%9D%97%E6%96%87%E4%BB%B6.png)
我有以下脚本将大量 .MOD 和 .XM 文件转换为 Wave 格式:
#!/bin/bash
for f in ./XM.* ./MOD.*
do
xmp $f -d wav -o - | ffmpeg -i - -acodec libmp3lame -ab 320k "$f.mp3"
done
但它并没有按预期工作。程序就挂了。它创建 .wav 文件,但仅此而已。(不写入其中)甚至 -vvv 开关也不提供任何信息。奇怪的是:如果我在前面加上“strace”,它就可以正常工作。
有什么想法/解决方法吗?
答案1
也许 xmp 会因为 stdin 不是 tty 而感到困惑?你可以尝试:
xmp $f -d wav -o - </dev/null | ffmpeg -i - -acodec libmp3lame -ab 320k "$f.mp3"
另外,我想参数的顺序需要是
xmp -d wav -o - "$f" </dev/null | ffmpeg -i - -acodec libmp3lame -ab 320k "$f.mp3"
在使用 xmp 4.0.6 和 avconv 而不是 ffmpeg 的 Ubuntu 14.04 上,顺序需要与-d wav
稍后的选项一起使用,否则将使用 raw
xmp -o - -d wav "$f" | avconv -i - -b 320k "$f.mp3"