我正在使用 youtube-dl 从 YouTube 视频中提取尽可能最佳的音频质量。然而,最好质量的音频通常是 webm 格式,但这种格式并没有什么用处。我想编写一个批处理脚本,使用 ffmpeg 将 webm 文件转换为 mp3。我已经尝试过在 reddit 上使用thisguide来做到这一点,但它似乎不起作用。它似乎创建了一个空的 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 转换为将 Downloaded 文件夹中的文件转换为 mp3 文件,并将其放入 Converted 文件夹中。 mp3脚本就是上面的代码。但它似乎不能正常工作。
我对批处理脚本不太熟悉,也不熟悉 ffmpeg,因此我们将不胜感激。
这是补充说明部分的图片。
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。
您可以通过此脚本进行转换:
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
在我的用例中,支持
.ogg
ffmpeg -i "input.webm" -vn -c:a copy "output.ogg"
无需重新编码:
-c:a copy
.webm 文件确实可以包含 vorbis 音频,但它也可以包含 opus 音频。 ogg 文件也可以包含这两种音频格式。无需转换为 .ogg 文件即可传输音频:
如果您在命令中添加了 -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
希望这有帮助。
webm 使用 vorbis 或 opus 音频编解码器,两者在质量上都远远优于 mp3。 aac 音频可在 youtube 上使用,其质量介于 opus 和 vorbis 之间,并且受到媒体播放器和小工具的大力支持。 就质量而言,不建议将有损音频重新编码为另一种有损音频,特别是如果其中一种音频格式是 mp3。
如果我是你,我就会抓住那个 aac。
根据这个答案:
youtube-dl -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata <Video-URL>
感谢您的精彩分享。根据我的测试,Allavsoft 将 youtube 转换为 mp3 也非常有效。它有 Windows 和 Mac 版本。它很容易使用。 支持批量下载和播放列表。