有几个问答主题解释了如何使用终端下载 YouTube 视频。
但是,我也想学习如何将视频的音轨提取为 MP3 文件——也只使用终端。
在解释如何提取 MP3 之前,先简要解释如何使用youtube-dl
或其他类似的实用程序,这样可以将所有信息集中在一个地方——尽管这方面已在其他帖子中介绍过。
答案1
您也可以直接从 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
。
答案2
从 YouTube 下载
安装youtube-dl来自 Ubuntu 官方存储库:
sudo apt-get install youtube-dl
或者正如官方自述文件所建议的那样使用curl
或wget
。这将允许您升级sudo youtube-dl -U
要下载视频,请执行以下操作:
youtube-dl <url>
例如
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来自官方 repo。
sudo apt-get install ffmpeg
接下来,输入以下命令,确保 flv 文件已从 youtube 下载
ls *flv
这将列出您拥有的所有 flv 文件。您应该看到一个 flv 文件,其名称与您下载的 youtube 网址的“v”部分相同。
例如如果你下载了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 文件。 - 信息来自这里
答案3
这个问题已经回答了很多次了,但我想我应该添加一些真正有用的东西。在我看来,当你安装 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"
}
答案4
对于此任务,我使用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
— (可选)将视频缩略图作为专辑封面元数据嵌入到已保存的音频文件中(将显示在媒体播放器应用程序中)。