使用youtube-dl下载最高质量的音频文件

71

我刚刚下载了youtube-dl,这样我就可以从youtube上下载视频和音频文件。

我想要从以下视频中下载最好的音频:https://www.youtube.com/watch?v=uWusmdmc0to

当我使用youtube-dl搜索所有格式时,我得到以下结果:

格式代码   扩展名     分辨率  备注
249          webm       纯音频 DASH音频 58k,opus @ 50k,18.99MiB
250          webm       纯音频 DASH音频 75k,opus @ 70k,25.20MiB
140          m4a        纯音频 DASH音频 131k,m4a_dash容器,mp4a.40.2@128k,52.40MiB
251          webm       纯音频 DASH音频 147k,opus @160k,50.95MiB
171          webm       纯音频 DASH音频 149k,vorbis@128k,52.64MiB
278          webm       256x144    144P   109k,webm容器,vp9,25fps,仅视频,34.62MiB
160          mp4        256x144    144P   117k,avc1.4d400c,25fps,仅视频,37.86MiB
242          webm       426x240    240P   245k,vp9,25fps,仅视频,75.13MiB
133          mp4        426x240    240P   258k,avc1.4d4015,25fps,仅视频,81.39MiB
243          webm       640x360    360P   492k,vp9,25fps,仅视频,142.99MiB
134          mp4        640x360    360P   673k,avc1.4d401e,25fps,仅视频,215.29MiB
244 webm 854x480 480p 828k , vp9, 25fps, 仅视频,256.58MiB 135 mp4 854x480 480p 1516k , avc1.4d401e, 25fps, 仅视频,408.56MiB 247 webm 1280x720 720p 1882k , vp9, 25fps, 仅视频,526.18MiB 136 mp4 1280x720 720p 3012k , avc1.4d401f, 25fps, 仅视频,803.36MiB 248 webm 1920x1080 1080p 3622k , vp9, 25fps, 仅视频,938.81MiB 137 mp4 1920x1080 1080p 4724k , avc1.640028, 25fps, 仅视频,1.44GiB 271 webm 2560x1440 1440p 9253k , vp9, 25fps, 仅视频,2.86GiB 313 webm 3840x2160 2160p 18685k , vp9, 25fps, 仅视频,6.33GiB 17 3gp 176x144 小,mp4v.20.3,mp4a.40.2@24k 36 3gp 320x180 小,mp4v.20.3,mp4a.40.2 43 webm 640x360 中,vp8.0,vorbis@128k 18 mp4 640x360 中,avc1.42001E,mp4a.40.2@96k 22 mp4 1280x720 高清720p,avc1.64001F,mp4a.40.2@192k(最佳)

如何获得最佳音频文件?前五个选项只有音频。我需要从这五个选一个吗?或者最后一个选项MP4 HD720是最佳选择,然后转换为MP3?

谢谢!


选项171vorbis@128k是此视频可用的最佳音频。对于其他视频可能会有所不同。重新编码将会丢失更多数据,无论在何种比特率下!为什么不自己进行测试,比较输出,在耳机、汽车等场景下听一下,看看哪种适合您的需求。 - NVRM
4
在这种情况下,格式代码为“251”的“opus@160k”具有最佳音频质量。Opus编解码器比Vorbis新十年,并且在表示听觉声音方面更加高效。 - Nayuki
10个回答

99
如果你想要 MP3 格式,只需告诉 youtube-dl 即可:
youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=uWusmdmc0to

使用youtube-dl下载视频时,加上-x参数,即可获得音频版本,而且可以转换成mp3格式(这是通过--audio-format选项实现的)。youtube-dl会自动选择最佳质量和最合适的格式。

请注意,列出的质量只是猜测。实际上,opus比其他任何格式都要好,但为了兼容性,vorbis被选中(有关详细信息,请参阅我的相关答案),因此将被选择。

虽然您可以使用-f来选择特定的格式,但这仅适用于带宽或存储空间有限的人,或者用于调试。默认情况下,youtube-dl已经下载了最高质量。


谢谢您的回复。我在更多网站上读到Opus是最好的。但为什么当我使用 youtube-dl -f bestaudio https://www.youtube.com/watch?v=uWusmdmc0to 时,youtube-dl下载Vorbis文件而不是可用的最佳文件呢? - WJ496582
@phihag 这给了我一个错误 ValueError: Invalid filter specification u'format="opus"' - Colin D
1
我想知道为什么 --audio-format 不能与 -f bestaudio 一起使用? - mrgloom
1
默认情况下,youtube-dl 已经下载了最高质量。完全不需要进行进一步的操作。最佳音频和视频流通常是分开的,需要使用 ffmpeg 合并,而且不会被选择为“最佳质量”。 - polkovnikov.ph
3
这种方法似乎是先下载音频和视频,再提取音频。是否可能只下载音频来节省带宽? - Simon East
显示剩余3条评论

51

如果您想要以最佳质量且不进行任何转换下载 opus 格式的音频

在大多数情况下,YouTube 提供的最佳质量音频原始格式为 opus。 您可以使用以下命令以最高可能的质量下载它:

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio https://www.youtube.com/watch?v=c29tZVZpZGVvUGxheWxpc3RQYXJ0

然而,opus格式可能因为许多原因不太方便。例如,一些媒体播放器,特别是汽车和手机上的播放器,可能不支持它。也许您只想要一个mp3文件中的音频。下面介绍了如何使用一个命令来下载音频并将其转换为可能最流行的mp3格式,并尽量减少损失质量。

如果您想要下载音频并将其转换为mp3或任何其他有损格式。

要从单个电影中下载音频:

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-quality 0 --audio-format mp3  https://www.youtube.com/watch?v=c29tZVZpZGVvUGxheWxpc3RQYXJ0
执行此命令需要安装ffmpeg(音视频转换器,youtube-dl使用它进行转换)。该命令仅下载音频(不带视频)并将其转换为mp3在此设置中,选项--audio-quality 0非常重要!没有此选项,在mp3压缩期间会失去很多声音质量。 --audio-quality 0告诉youtube-dl以最佳质量保存音频文件(转换为mp3时)。如果没有此选项,默认情况下,mp3的音质设定为0-9范围内的5,其中0是最佳音质,9是最差的音质。因此,默认情况下质量较差。 面向非付费用户的Youtube流具有可变比特率,达到160kbpsopus格式。 Opus格式比mp3更新,并具有更好的压缩性,同时保持相同的质量。因此,160kbps的opus = 〜256kbps的mp3。当audio-quality为默认值(0-9范围内的5)时,mp3比特率受到限制,最高达160kbps,这意味着在压缩过程中会丢失一些声音质量。当audio-quality设置为0时,mp3可达到300kbps,保留几乎原始的质量。几乎原始的质量是因为mp3是有损格式,所以在转换为它时会丢失一些东西。通过使用--audio-quality 0选项,我们只需确保在此转换过程中损失尽可能少的内容即可。因此,原始opus音频文件和转换为mp3的音频文件之间的差异非常小,可能很难用耳朵听出来。

要从渠道下载所有电影的音频:

命令相同,但您应该放置渠道链接而不是单个视频链接。

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-quality 0 --audio-format mp3 https://www.youtube.com/c/someChannelName1232143/videos

下载播放列表中的音频:

您需要添加--yes-playlist选项。
您可以将指向播放列表(包含单词playlist的链接)的链接放置在此处:

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-format mp3 --audio-quality 0  --yes-playlist https://www.youtube.com/playlist?list=c29tZVZpZGVvVVJMUGFy

在播放播放列表时,或者链接到播放列表中的一首歌曲(带有 list 单词的链接):

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-format mp3 --audio-quality 0  --yes-playlist "https://www.youtube.com/watch?v=c29tZVZpZGVvUGxheWxpc3RQYXJ0&list=c29tZVZpZGVvTGlzdFBhcnRzc29tZVZpZGVvTGlzdFBhcnRz&index=4"

如果您想下载音频并将其转换为flac或任何其他无损格式

在这种情况下,您不必指定--audio-quality选项,因为在转换为无损格式时,youtube-dl会忽略它。

要从单个电影中下载音频:

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-format flac  https://www.youtube.com/watch?v=c29tZVZpZGVvUGxheWxpc3RQYXJ0

从一个频道下载所有电影的音频:

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-format flac https://www.youtube.com/c/someChannelName1232143/videos

从播放列表下载音频:

youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-format flac --yes-playlist https://www.youtube.com/playlist?list=c29tZVZpZGVvVVJMUGFy
或者
youtube-dl -f "bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v --extract-audio --audio-format flac --yes-playlist "https://www.youtube.com/watch?v=c29tZVZpZGVvUGxheWxpc3RQYXJ0&list=c29tZVZpZGVvTGlzdFBhcnRzc29tZVZpZGVvTGlzdFBhcnRz&index=4"

命令选项解释:

-f "bestaudio/best" <- Choose the best audio format.
As there is only audio format listed only the audio is downloaded.

-c <- (--continue) Force resume of partially downloaded files.
By default, youtube-dl will resume downloads if possible.
As docs state maybe it is default, but I put it to make sure it is set.

-i <- (--ignore-errors) Continue on download errors,
for example to skip unavailable videos in a playlist.

-w <- (--no-overtwrites) Do not overwrite files
(If something was already downloaded
and is present in the directory then continue with the next video)

-o "%(title)s.%(ext)s" <- (--output) Output filename template,
in this case it gives you file named movieTitle.mp3
where movieTitle is the title of the video on youtube.

-v <- (--verbose) Print various debugging information

--extract-audio <- (-x) Convert video files to audio-only files
(requires ffmpeg or avconv and ffprobe or avprobe)

--audio-quality 0 <- Specify ffmpeg/avconv audio quality,
insert a value between 0 (better) and 9 (worse) for VBR or a specific
bitrate like 128K (default 5).
Youtube streams for nonpremium users with variable bitrate up to 160kbps in opus format.
Opus format is newer than mp3 and has better compression than mp3
preserving the same quality. So 160kbps opus = ~ 256kbps mp3.  
When audio-quality is default (5 in 0-9 scale) mp3 bitrate
is limited to 160kbps which means that some sound quality is lost during compression.
When audio-quality is set to 0 mp3 goes up to 300kbps preserving original quality.

--audio-format mp3 <-  Specify audio format: "best", "aac", "flac", "mp3", "m4a",
"opus", "vorbis", or "wav"; "best" by default; No effect without -x (--extract-audio).
In this case we choose mp3.
Alternatively you could choose for example flac which is loseless codec.

我提供的所有链接都是虚假的。 我只是在其中放置了一些使用base64编码的随机单词。 因此,您必须将它们替换为自己的链接才能使其正常工作。

提示:

Youtube-dl gives you opportunity to use your own youtube account to download stuff.
If your account is a premium account you can get
higher 320kbps opus bitrate which is equivalent of ~512kbps mp3.
Using your own account might be possible by setting --username and --pasword
(See Authentication Options in --help)

注意:

以上内容与youtube-dl版本2021.12.17有关。较新版本可能会改变某些内容,请注意。


“--audio-quality 0” 不会重新编码音频,从而降低质量吗?我们想要原始流(即使它是有损的),而不是有损到有损的转码,对吧? - gargoylebident
只有在指定不兼容的输出格式时(例如,您希望输出为.mp3,但只有.opus流可用)才使用“--audio-quality 5”。如果您不这样做,它将不使用该标志。您说有损到有损的转码比未经处理的有损文件听起来更好。这毫无意义。无论如何都会有损(已经在YouTube / Soundcloud等服务器上有损),您只会通过重新编码使情况变得更糟。这与合并音频和视频完全无关。简而言之:“--audio-quality 0”会降低质量。 - gargoylebident
@gargoylebident 感谢您的评论。您是正确的。我的回答中有些陈述是不正确的。我根据您的评论修改了我的回答。它仍然专注于转换为 mp3(我认为这是大多数人最方便的格式),但现在它还告诉了如何通过不将其转换为其他格式来防止最佳质量的损失,并且无论多么准确,转换为 mp3 都会导致一些数据丢失。我删除了以前的评论,因为它们总体上没有意义。 干杯 :) - luke
我投票支持这个答案,因为它非常有差异性(为了什么目标而提出的哪些论点),并且解释了所有的论点。 - porg

14

下载最好的音频:

youtube-dl -f bestaudio https://www.youtube.com/watch?v=3_y2jVPmPBw --output "out.%(ext)s"

13

这应该能给你最好的音质:

youtube-dl --extract-audio "https://www.youtube.com/watch?v=uWusmdmc0to"

我建议不要指定任何音频格式。如果您指定音频格式,则该格式可能与原始编码不同,这将导致音质损失。


好的解释。 - dipenparmar12

4

我在Windows中使用批处理文件,将YouTube网址传递给预设的参数列表,以下载最高质量的音频流并保存为MP3格式。

批处理文件包含以下内容:

youtube-dl -f bestaudio -x --audio-format mp3 %*

将批处理文件保存在与youtube-dl相同的目录中(我将其保存为youtube-mp3.bat),在同一目录中安装ffmpeg。

每当我想下载音频(通常是为了下载YouTube DJ混音)时,我只需将(YouTube)URL传递给批处理文件。这样可以避免每次记住要使用哪些参数。

youtube-mp3 https://www.youtube.com/?v=xxxxxx   

3
虽然您可以通过以下方式获得最佳音频:
$ youtube-dl -f bestaudio https://www.youtube.com/watch?v=7E-cwdnsiow

您可以通过以下方式获得最差的视频和最好的音频:
$ youtube-dl -f worstvideo+bestaudio https://www.youtube.com/watch?v=7E-cwdnsiow

或者你可以将最佳音频和最佳视频分别保存在两个不同的文件中,像这样:

$ youtube-dl -f bestvideo,bestaudio https://www.youtube.com/watch?v=7E-cwdnsiow

更好的是,您可以在您认为合理的范围内寻找最好的视频,并将其与音频结合起来:
$ youtube-dl -f 'bestvideo[height<=480]+bestaudio/best[height<=480]' https://www.youtube.com/watch?v=7E-cwdnsiow

3
我个人目前使用的是:
youtube-dl -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0

这是所有其他答案的不错结合。 我通过输入以下命令创建了别名youtube-dl-music

alias youtube-dl-music='youtube-dl -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0'

希望这对需要快速复制和粘贴命令的人有所帮助。


但是为什么要重新编码音频为MP3呢?直接保留为Opus不就好了吗? - chpio
@chpio 因为这对我来说在除了我的电脑之外的播放设备上效果最好。 - alex

2

您可以尝试通过以下方式下载所需格式的音频:

youtube-dl -f m4a https://www.youtube.com/watch\?v\=ZtrEWtk9kbo 

命令。

有时需要使用ffmpeg。


1
检查您是否已从您的位置安装了ffmpeg软件包,方法如下。
sudo apt install ffmpeg
sudo pip install ffmpeg

在上面的代码之后,我得到了如下结果:
youtube-dl https://www.youtube.com/watch?v=6Qmnh5C4Pmo
[youtube] 6Qmnh5C4Pmo: Downloading webpage
[download] Destination: Pipenv Crash Course-6Qmnh5C4Pmo.f248.webm
[download] 100% of 33.19MiB in 00:26
[download] Destination: Pipenv Crash Course-6Qmnh5C4Pmo.f251.webm
[download] 100% of 15.15MiB in 00:09
[ffmpeg] Merging formats into &quot;Pipenv Crash Course-6Qmnh5C4Pmo.webm&quot;
Deleting original file Pipenv Crash Course-6Qmnh5C4Pmo.f248.webm (pass -k to keep)
Deleting original file Pipenv Crash Course-6Qmnh5C4Pmo.f251.webm (pass -k to keep)

0
这对于提供M4A格式音频的网站(例如YouTube,Facebook视频)对我有效:
youtube-dl -f "bestaudio[ext=m4a]/best[ext=mp4]" -x "https://..."

由于没有指定--audio-format,因此youtube-dl不会重新编码,因此不会丢失音频质量。但是,视频可能以更高的质量(具有不同的ext=...)可用。


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