如何从YouTube视频中下载MP3音轨

有几个问答帖子解释了如何使用终端下载YouTube视频。
然而,我还想学习如何将视频的音轨提取为MP3文件-同样只使用终端。
为了将所有信息放在一个地方,最好在解释如何提取MP3之前,简要介绍如何使用youtube-dl或其他类似工具-即使这方面已经在其他帖子中涵盖过。

2这很接近,但我认为它特别寻找MP3的事实使它与众不同。 - Jacob Tomlinson
1在大多数情况下,您可以直接下载m4a或webm格式而无需进行转换。这是一个交互式脚本,它将让您选择特定的“版本”,例如仅音频、仅视频等:youtube-dl -F "$1" ; read -p "请输入所需的质量编号:" FORMAT ; youtube-dl -f $FORMAT "$1" - ccpizza
我投票支持重新开放这个问题,因为链接的问题与之相当不同,没有任何答案,并且进入了一系列不相关的重复问题,这些问题都没有涉及从YouTube视频中提取音频的方法。 - David Foerster
1注意:对于发现这个的MacPorts用户,请使用sudo port install youtube-dl来安装youtube-dl - jvriesem
7个回答

你也可以直接从YouTube下载mp3文件,而无需使用ffmpeg进行转换。
youtube-dl --extract-audio --audio-format mp3 <video URL>

从在线帮助中:
-x, --extract-audio        convert video files to audio-only files (requires
                           ffmpeg or avconv and ffprobe or avprobe)

请记住,youtube-dl 默认使用 avconv,因此您应该考虑在命令行中指定 avconv 或 FFmpeg。来自在线帮助的内容:
--prefer-avconv                  Prefer avconv over ffmpeg for running the
                                 postprocessors (default)
--prefer-ffmpeg                  Prefer ffmpeg over avconv for running the
                                 postprocessors

通过查看 youtube-dl -h ,可以看到进一步保留原始视频、调整音频的比特率或质量以及其他一些选项。


youtube-dl <视频链接> --audio-format mp3 并不能将我下载为mp3格式! - fromnaboo
11如果您查看手册页,此选项会告诉您仍需下载 ffmpeg - user1527227
4在处理像youtube-dl这样的问题时,如果出现以下错误: ERROR: Unable to download webpage: <urlopen error [Errno 8] _ssl.c:510: EOF occurred in violation of protocol>这个链接对我很有帮助:http://askubuntu.com/questions/791969/error-while-using-youtube-dl - noisy
12如果你使用的是zshOh My Zsh而不是Bash,那么你可能会遇到一个错误,提示"没有找到匹配项" - 只需要将URL放在引号内,例如:youtube-dl --extract-audio --audio-format mp3 "<视频URL>"youtube-dl --extract-audio --audio-format mp3 '<视频URL>' - hazrpg
运行brew install youtube-dl && brew install ffmpeg可以安装YouTube-DL和FFmpeg在Mac用户的机器上。 - noɥʇʎԀʎzɐɹƆ
这是从Youtube下载现成的mp3吗?也就是说,Youtube会为每个视频生成自己的mp3,并且可以下载吗?我只是想要明确一下,因为我正在考虑切换到这种方法(--audio-quality 0的文件大小大约是原来的两倍)。 - felwithe
"-f bestaudio" 的作用与 "--audio-quality 0" 相同。 - rofrol
11文档中可以看到:"默认情况下,youtube-dl会尝试下载最佳可用质量,也就是说,如果你想要最好的质量,不需要传递任何特殊选项,youtube-dl会默认为您猜测。" - Ilya Serbis
这里有一个简单的脚本可以自动化这个过程 https://github.com/rst0git/youtube-dl-mp3 - Radostin Stoyanov
安装ffmpeg 用于解决"ffprobe/avprobe和ffmpeg/avconv未找到"的问题 - ccppjava
使用youtube-dl --output "%(title)s.%(ext)s" --extract-audio --audio-format mp3 --audio-quality 0命令,可以将MP3文件的文件名设置得更好一些。详细信息请参考这里 - Pablo Bianchi
1在Ubuntu 16.04版本上无法运行(2020-03-25),但我从GitHub下载了最新的二进制文件,现在可以正常工作了。 - 719016
在Ubuntu 20.04上出现了问题:“找不到视频格式,请在https://yt-dl.org/bug上报告此问题。”[您可能需要从源代码安装而不是使用apt版本](https://askubuntu.com/a/1202606/208696)。 - matanster
在我的Mac上运行良好。但是我首先需要从Homebrew安装ffmpeg。我还发现一些视频无法播放。Youtube显示错误,称其“无法提取视频数据”。不知道为什么。我尝试了一些youtube-mp3网站,也失败了,但只是那个特定的视频。 - GeneCode
当我使用--audio-quality 0参数时,好像能获得更高比特率的音频,而当我省略该参数时则不行。 - Cory Gross

从YouTube下载

在Ubuntu的官方存储库中安装youtube-dl

sudo apt-get install youtube-dl

或者按照官方的自述文件建议,使用curl或wget命令。这将允许您通过sudo youtube-dl -U命令进行升级。
要下载视频,请执行以下操作:
youtube-dl <url>

E.g

youtube-dl http://www.youtube.com/watch?v=_z-hEyVQDRA

您还可以指定其他选项
-b            Best quality
-m            Mobile version
-d            High Definition
-g            Don’t download, just show the url
-c            Resume download of a video which was interrupted before
-w            Don’t overwrite existing file

要查看完整的开关列表,请在终端中执行man youtube-dl

有关信息,请访问此处

转换为mp3格式

现在从官方仓库安装ffmpeg

sudo apt-get install ffmpeg

下面请确保通过输入来查看已从YouTube下载的flv文件。
ls *flv

这将列出您拥有的所有flv文件。您应该看到一个与您下载的YouTube URL的'v'组件名称相同的flv文件。
例如,如果您下载了http://www.youtube.com/watch?v=_z-hEyVQDRA,那么您应该有一个名为_z-hEyVQDRA.flv的文件。
接下来,您需要复制该文件名,然后将其放入类似以下的ffmpg命令中:
ffmpeg -i <file name>.flv -acodec libmp3lame <song name>.mp3

所以对于这个例子,你会输入以下内容
ffmpeg -i _z-hEyVQDRA.flv -acodec libmp3lame MasterOfPuppets.mp3

一旦成功完成此操作,您将获得所需的mp3文件。
注意:
- 如果需要清理,您可以键入rm _z-hEyVQDRA.flv来删除不再需要的flv文件。 - 有关更多信息,请参阅此处

您可能希望使用FFmpeg或Aconv来将其转换为MP3。 - NRoach44
再加上,在ffmpeg命令行中使用-acodec liblamemp3 - NRoach44
1是的,你可以强制使用编解码器来确保,我已经添加了这个功能。你还可以使用“-ac 2 -ab 128k”来确保转换为128k。 - Jacob Tomlinson
6或者只需使用youtube-dl -x "${URL}" - Mathias Bynens
@NRoach44:应该是"libmp3lame",而不是"liblamemp3"。 - Dan Dascalescu
有趣,但是为什么要下载所有这些视频数据,当你只想要音频呢?@uniquerockrz的解决方案似乎相当明智。 - smonff
使用apt-get几乎可以保证获得一个过时的版本,而且通常会是一个“损坏”的版本,因为Youtube经常更新自己。请使用官方网站上的手动安装说明来获取一个既能正常工作又能正确更新的版本:http://rg3.github.io/youtube-dl/download.html - felwithe
错误:您还可以指定其他选项-b 最佳质量 -m 移动版本 -d 高清晰度 -g 不下载,只显示URL -c 继续下载之前中断的视频 -w 不覆盖现有文件 - ChangosMuertos
@ChangosMuertos 是的,这个答案已经过时了(它是5年前的...)。请看接受的答案。 - Jacob Tomlinson

这个问题已经被回答了很多次,但我觉得我可以添加一些真正有用的东西。在我看来,当你安装youtube-dl软件包时,应该包含这些别名。
我将它们添加到我的.bashrc文件中。如果我想将视频下载为mp3格式,我可以这样做;或者如果我想将整个播放列表下载为mp3格式,我可以使用mp3p命令,然后加上播放列表的URL。
这非常简单,并且通过在下载之间设置30秒的时间间隔,也尊重YouTube的洪水或机器人保护措施。这也有助于确保您的IP不会被禁止访问。
# youtube-dl alias
mp3 () {
    youtube-dl --ignore-errors -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o '%(title)s.%(ext)s' "$1"
}

mp3p () {
    youtube-dl --ignore-errors --sleep-interval 30 -i -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' "$1"
}

dlv () {
    youtube-dl --ignore-errors -o '%(title)s.%(ext)s' "$1"
}

dlp () {
    youtube-dl --yes-playlist --ignore-errors --sleep-interval 30 -o '%(playlist)s/%(title)s.%(ext)s' "$1"
}

对于那些喜欢图形用户界面的人来说,MediaHuman提供了一个YouTube to MP3的工具。 1. 安装 你可以选择在Ubuntu 16.04+上进行直接下载,但我更喜欢使用软件源进行自动更新。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7D19F1F3
sudo add-apt-repository https://www.mediahuman.com/packages/ubuntu

sudo apt update
sudo apt install youtube-to-mp3

2. 使用方法

通过“Dash”或其他启动器搜索并打开“Youtube to MP3”。从浏览器中复制Youtube视频的URL到剪贴板中,然后单击左上角的“粘贴链接”按钮将其粘贴到应用程序中。请参见下面的截图。

下载和转换将自动开始,并在主文件夹下保存音频:/Music/Downloaded by MediaHuman

Youtube to MP3 main interface


2终于,一个很棒的图形用户界面!运行得非常顺畅(Lubuntu 18.04)。还能将YouTube缩略图作为艺术品获取。设置页面非常出色,如果你喜欢自定义,有很多选项可供调整。感谢分享,真是个好发现。 - colorful-shirts

对于这个任务,我使用 youtube-dl(依赖于 ffmpeg)以获得最佳结果的以下选项。您可以传递一个单曲或整个播放列表的URL给它。
youtube-dl --prefer-ffmpeg --extract-audio --audio-format mp3 --audio-quality 0 --embed-thumbnail <VIDEO_SONG_OR_PLAYLIST_URL>

解析所提供选项的含义:

  • --prefer-ffmpeg — 告诉youtube-dl优先选择ffmpeg(而不是avconv)。
  • --extract-audio — 提取音频流并丢弃视频。
  • --audio-format mp3 — 将音频流保存为mp3格式。
  • --audio-quality 0 — 以最高质量保存音频。此处可能的取值为0-9(也可以传递显式比特率,如128K)。如果不传递此选项,youtube-dl将使用默认值5,导致音频质量较低,而值为0则会获得更高的音频质量。
  • --embed-thumbnail — (可选)将视频缩略图嵌入保存的音频文件中作为专辑封面元数据(将在媒体播放器应用程序中显示)。

16.04及以上版本

我建议使用youtube-dl快照包(sudo snap install youtube-dl)下载YouTube视频的mp3组件,这样您就不会因为您的youtube-dl版本不是最新的而被阻止从YouTube下载。

显示特定YouTube URL的可用格式列表,我在下面的代码行中用<video URL>表示。

snap run youtube-dl -F <video URL>

从特定的网址下载mp3。

snap run youtube-dl -f your-choice-of-format --extract-audio --audio-format mp3 <video URL>

在这里,your-choice-of-format将被一个整数替代,该整数是从仅音频结果中选择的,通过youtube-dl -F <URL>命令获取。 youtube-dl -F <URL>仅音频结果将显示可供选择的比特率(例如192k),供您选择,但youtube-dl -F <URL>仅视频结果无法由youtube-dl保存为任何音频格式。


如果遵循官方文档,为什么youtube-dl不会保持最新?只需使用youtube-dl -U进行更新,无需使用snap。 - Pablo Bianchi
@PabloBianchi 在Ubuntu中,youtube-dl -U命令并不总是能正常工作,它并不能更新youtube-dl,而是没有任何反应。遇到这个问题的Ubuntu用户可以通过安装youtube-dl的snap软件包来解决,该软件包通常会自动更新到最新版本,或者至少更新到较新的youtube-dl版本。总体而言,在Ubuntu中,snap软件包比apt软件包更容易自动更新到较新的版本,因此对于希望使用最新软件版本的用户来说,snap软件包是一个不错的选择。 - karel
正确安装(官方方式,不是使用apt,这个我没有提到)-U 应该可以工作(对我来说一直有效),如果不行的话,可以提交一个问题。唯一的优势可能是容器化。 - Pablo Bianchi

如果你只需要一个用于从YouTube下载音频的图形用户界面,我想介绍一下YoutubeDownloader
它被设计成在质量和功能上都能提供最佳体验。它提供了一个简单的界面,只用于下载视频或音频轨道。它采用GTK3界面,并专为Linux/Ubuntu编写。