使用批处理脚本将youtube-dl下载的webm文件转换为mp3格式,并使用ffmpeg进行转换。

28

我正在使用youtube-dl从YouTube视频中提取最好的音频质量。然而,最好的音频质量通常是webm格式,这是没有用的。我想编写一个批处理脚本,使用ffmpeg将webm文件转换为mp3。我已经尝试使用这篇Reddit指南来完成它,但似乎不起作用。它似乎会创建一个空的mp3文件,当我尝试播放它时会显示错误,并且元数据也完全为空。

以下是批处理脚本:

for %%a in ("Downloaded\*.*") do %CD%\ffmpeg\bin\ffmpeg.exe -i "%%a" -vn -ar 44100 -ac 2 -ab 192k -f mp3 "Converted\%%~na.mp3" pause

我也会解释整个过程应该如何运作。

这个想法是,你使用youtube-dl提取最佳音频,然后将该文件放入下载文件夹(参见下面的图片),然后运行mp3脚本(该脚本使用来自ffmpeg的命令)将下载文件夹中的webm文件转换为mp3文件,并将其放置在已转换文件夹中。mp3脚本是上面的代码。但它似乎无法正常工作。

我不太熟悉批处理脚本,也不太熟悉ffmpeg,所以任何帮助都将不胜感激。

这里是为了补充说明部分而提供的图片。

输入图像描述

5个回答

54

youtube-dl 已经具备了这个功能 - 只需指定你要的是 mp3 格式:

youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=BaW_jenozKc

https://www.youtube.com/watch?v=BaW_jenozKc 替换为您实际的URL。


1
我知道这一点,但我更喜欢先获取最好的音频作为webm,然后再转换为mp3。这样我就知道我得到了最好的可能质量。直接获取mp3可能比获取webm并转换还要差。如果你明白我的意思的话。当然,除非你有其他的了解。 - SneakyShrike
1
YouTube甚至不提供mp3文件。您似乎混淆了“--audio-format”和“-f”选项。前者确定您想要的输出,后者确定您要下载的格式。默认情况下,youtube-dl将选择最高质量。如果您想要,可以添加“-f bestaudio/best”来强制youtube-dl仅下载最佳音频流。除非YouTube决定添加mp3支持,否则这不会改善质量,因为最高质量已经是youtube-dl的默认行为。 - anon
1
好的,那么执行以下命令:youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=BaW_jenozKc 可以从YouTube获取最佳音频质量,然后将其转换为mp3文件?我担心的问题是最佳质量通常是webm格式,而我没有用处。因此,我的想法是提取webm文件,然后将其转换为mp3或任何其他支持的格式,并尽可能少地损失原始webm文件的质量。 - SneakyShrike
2
啊,好的,我现在明白了。感谢您的耐心和理解。 - SneakyShrike
1
我明白了,我想我可以通过使用MP3来节省文件空间。再次感谢。 - SneakyShrike
显示剩余3条评论

13

您可以通过此脚本进行转换:

for FILE in *.webm; do
    echo -e "Processing video '\e[32m$FILE\e[0m'";
    ffmpeg -i "${FILE}" -vn -ab 128k -ar 44100 -y "${FILE%.webm}.mp3";
done;

将它保存到一个 .sh 文件中并执行它。它会自动将所有的 .webm 转换成 .mp3。


你还没有看到 [tag:batch-file] 标签吗? - Reino
@Reino,没有,你认为我的回答不相关吗? - Francesco Mantovani
对于特别是 Windows 用户的 OP,不行。 - Reino
不应该使用shell,而应该使用Makefilemake来完成这个任务,以便能够并行地利用机器中的所有可用处理核心进行转换。 - undefined

2

节省了我一个小时等待ffmpeg重新编码,谢谢! - umnikos

1

WebM使用Vorbis或Opus音频编解码器,两者在质量上都远优于MP3。 AAC音频可在YouTube上使用,其质量介于Opus和Vorbis之间,并得到媒体播放器和设备的大力支持。 从质量上讲,不建议将有损音频重新编码为另一种有损音频,特别是其中一种音频格式为MP3。

如果我是你,我会选择AAC。

根据this answer

youtube-dl -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata <Video-URL>

我通常使用m4a格式,但我不确定那是否为AAC格式。 - SneakyShrike
m4a是mp4容器内的AAC流。'苹果AAC'实际上是带有AAC扩展名的m4a文件 :O - robotik
我明白了,当我使用youtube-dl提取YouTube视频时,我只是看到并使用m4a选项。 - SneakyShrike

1
如果您在命令中添加了“-f bestaudio”选项,即youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=BaW_jenozKc, 它将首先从YouTube下载最佳音频,然后将其转换为mp3,而无需ffmpeg bash脚本。
在这种情况下,命令应该是:
youtube-dl -f bestaudio -x --audio-format mp3 https://www.youtube.com/watch?v=BaW_jenozKc

希望这能帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接