我有大约 20 个 .webm 文件,我想在终端中将其转换为音频。我想这样做
avconv -i *.webm -acodec libmp3lame0 -aq 4 *.mp3
我试过:
for i in *.webm; do avconv -i "${i}" -acodec libmp3lame0 -aq 4 "${i%.wemb}.mp3"; done
但它显示“未找到 libmp3lame0 编码器”。但它已安装。我还安装了 ubuntu-restricted-extras 并重新安装了 libav-tools。
我也试过
for i in *.webm; do avconv -i "${i}" -acodec -aq 4 "${i%.wemb}.ogg"; done
删除整个 mp3/LAME 方面,但它只是说“未找到 .ogg 编码器”。
当我尝试使用不带 for 循环的 libmp3lame0 进行转换时,这种方法曾经起作用...但我刚尝试转换一个文件,它就不再起作用了。
谢谢。(我使用的是 12.10。)
答案1
您似乎使用了错误的编解码器名称。要查看支持哪些编解码器,请执行以下操作:
avconv -codecs
根据这个,编解码器名称是 libmp3lame(你多了一个 0)。不过这是我的系统上的,所以你的可能不一样。我给出的命令会让你知道。
答案2
在许多发行版中,默认情况下 avconv 未使用“--enable-libmp3lame”构建。avconv 必须使用 MP3 支持进行编译才能使用 libmp3lame。
我的解决方案是从 git repo 下载 libav,然后自己构建。这是我使用的 configure 命令行:
./configure --enable-libmp3lame --enable-nonfree --enable-gpl --enable-libx264
您可以使用以下命令行验证 avconv 是否内置了 MP3 编码支持:avconv -codecs
您必须在第二列功能中看到“E”才能使 MP3 编码正常工作:
DEA.L. mp3 MP3(MPEG 音频层 3)(解码器:mp3 mp3float)(编码器:libmp3lame)
如果第二列是“。”,则 MP3 编码未内置到您的 avconv 中:“DEA.L。”是好的,“DAL”是坏的。