如何使用 youtube-dl 将 youtube 视频下载为最佳质量的音频 mp3

Eka*_*Eka 76 sound video youtube mp3 youtube-dl

我想以最佳质量将 YouTube 视频下载为 mp3 文件。下面的代码有助于下载 youtube 视频,m4a但不是我们mp3

youtube-dl -f bestaudio --audio-quality 0 --audio-format mp3 https://www.youtube.com/playlist?list=PLYRruMbyFRcBVdVN8v4FNkIKkXvL-bZn_
Run Code Online (Sandbox Code Playgroud)

你能告诉我如何使用bestaudio参数来下载 YouTube 视频吗mp3

May*_*hux 113

来自man youtube-dl

-x, --extract-audio                  Convert video files to audio-only files (requires ffmpeg or avconv and ffprobe or avprobe)
    --audio-format FORMAT            Specify audio format: "best", "aac", "vorbis", "mp3", "m4a", "opus", or "wav"; "best" by default
    --audio-quality QUALITY          Specify ffmpeg/avconv audio quality, insert a value between 0 (better) and 9 (worse) for VBR or a specific bitrate like 128K (default
Run Code Online (Sandbox Code Playgroud)

所以你的命令可能是:

youtube-dl -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 <Video-URL>
Run Code Online (Sandbox Code Playgroud)

--audio-quality 0使用最高编码质量,但可以不必要地增加文件大小。默认值为 5,可能是更好的选择,具体取决于源质量。

因此,如果质量和文件大小对您很重要,您应该避免重新编码并使用 Youtube 的原生音乐格式:

youtube-dl -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata <Video-URL>
Run Code Online (Sandbox Code Playgroud)

导致m4a文件或

youtube-dl -f bestaudio --extract-audio --embed-thumbnail --add-metadata <Video-URL>
Run Code Online (Sandbox Code Playgroud)

可能会产生一个ogg文件。

您可以列出可用的格式

youtube-dl -F <Video-URL>
Run Code Online (Sandbox Code Playgroud)


小智 14

如果您只想要 mp3 文件:

youtube-dl -f bestaudio  "https://www.youtube.com/playlist?list=PLYRruMbyFRcBVdVN8v4FNkIKkXvL-bZn_" --exec "ffmpeg -i {}  -codec:a libmp3lame -qscale:a 0 {}.mp3 && rm {} "
Run Code Online (Sandbox Code Playgroud)

如果您不想删除原始文件:

youtube-dl -f bestaudio  "https://www.youtube.com/playlist?list=PLYRruMbyFRcBVdVN8v4FNkIKkXvL-bZn_" --exec "ffmpeg -i {}  -codec:a libmp3lame -qscale:a 0 {}.mp3 "
Run Code Online (Sandbox Code Playgroud)

  • 这很热!这完全取代了我迄今为止使用的脚本。就我个人而言,我喜欢使所有下载的音频处于相同的“音频级别”([响度](https://en.wikipedia.org/wiki/Loudness)),并希望 ffmpeg 有[一个选项](http:// ffmpeg.org/ffmpeg-all.html#loudnorm)。所以对我来说这变成(使用 ffmpeg): `youtube-dl -f bestaudio "https://youtu.be/..." --exec "ffmpeg -i {} -c:a mp3 -filter:a Loudnorm= i=-18:lra=17 -qscale:a 2 {}.mp3 &amp;&amp; rm {} "` (2认同)

小智 8

推荐使用Pafy(Python),很容易获取音频链接,有需要的可以直接下载:

#python3
import pafy
video = pafy.new('video id or video url')
bestaudio = video.getbestaudio()
bestaudio.bitrate #get bit rate
bestaudio.extension #extension of audio fileurl
...
bestaudio.url #get url
...
#download if you want
bestaudio.download()
Run Code Online (Sandbox Code Playgroud)


Wil*_*ilf 5

还值得注意的是其他部分man youtube-dl(可以在此处找到在线副本):

(对于那些思考 TL;DR 的人,只需阅读第 4 段,您就可以使用youtube-dl -x URL它,因为它无论如何都应该下载最佳质量:)

youtube-dl -f bestaudio URL适用于我的经验!但是,大多数情况下,使用这两个选项,您将需要使用ffmpeg或类似的方法转换为 MP3 - 由于您已经在编辑文件,您还可以标记它(使用旧的 ID3 版本以获得大多数设备兼容性!)。

格式选择

默认情况下,youtube-dl 会尝试下载最佳质量,但有时您可能想要下载其他格式。最简单的情况是请求特定格式,例如-f 22. 您可以使用 获取可用格式列表--list-formats,也可以使用文件扩展名(目前支持 aac、m4a、mp3、mp4、ogg、wav、webm)或特殊名称 best、bestvideo、bestaudio 和最差。

如果您想下载多个视频并且它们没有相同的可用格式,您可以使用斜杠指定首选项的顺序,如-f 22/17/18. 您还可以通过将条件放在括号中来过滤视频结果,如-f "best[height=720]"(或-f "[filesize>10M]")。这适用于文件大小、高度、宽度、tbr、abr、vbr、asr 和 fps 以及比较 <、<=、>、>=、=、!= 以及 ext、编解码器、vcodec、容器和协议以及比较 =, != 。除非在运算符后放置问号 (?),否则会排除未知值的格式。您可以组合格式过滤器,因此 -f "[height <=? 720][tbr>500]"最多可以选择比特率至少为 500 KBit/s 的 720p 视频(或高度未知的视频)。

使用逗号可以下载多种格式,例如-f 136/137/mp4/bestvideo,140/m4a/bestaudio. 可以使用-f <video-format>+<audio-format>(需要ffmpeg或avconv)将两种格式的视频和音频合并到一个文件中,例如-f bestvideo+bestaudio.

自 2015 年 4 月下旬起,youtube-dl 版本 2015.04.26-f bestvideo+bestaudio/best用作默认格式选择(请参阅 #5447、#5456)。如果安装了 ffmpeg 或 avconv,这会导致分别下载 bestvideo 和 bestaudio 并将它们混合到一个文件中,从而提供最佳的整体质量。否则它会回退到最佳状态并导致下载作为单个文件提供的最佳可用质量。对于不是来自 YouTube 的视频,也需要最好,因为它们不提供两个不同文件中的音频和视频。如果您只想下载一些破折号格式(例如,如果您对获取分辨率高于 1080p 的视频不感兴趣),则可以添加-f bestvideo[height<=?1080]+bestaudio/best到您的配置文件。请注意,如果您使用 youtube-dl 流式传输到标准输出(并且最有可能将其通过管道传输到您的媒体播放器),即您明确指定输出模板为 -o -,youtube-dl 仍使用-f best格式选择以便立即开始向您发送内容播放器,而不是等到 bestvideo 和 bestaudio 下载和混合。

如果您想保留旧的格式选择行为(在 youtube-dl 2015.04.26 之前),即您想下载作为单个文件提供的最佳可用质量媒体,您应该使用-f best. 您可能希望将其添加到配置文件 (#configuration) 中,以免每次运行 youtube-dl 时都输入它。

...

你能把 -b 选项放回去吗?

大多数问这个问题的人都不知道 youtube-dl 现在默认下载 YouTube 报告的最高可用质量,在某些情况下是 1080p 或 720p,因此您不再需要 -b 选项。对于某些特定视频,可能 YouTube 没有报告它们以您感兴趣的特定高质量格式提供。在这种情况下,只需使用-f选项请求它,youtube-dl 将尝试下载它。

Youtube(可能因为它应该是一个视频播放站点)显然也将音频(见这里)压缩到 120~KBs,这是相当低的,但在大多数情况下似乎还可以。

要比较下载的视频,您可以查询下载的视频/音轨(您可能需要使用avprobe代替ffprobe)以查看哪个最好:

$ ffprobe -hide_banner output-output-loads-of-options.webm
Input #0, matroska,webm, from 'output-output-loads-of-options.webm':
  Metadata:
    encoder         : google
  Duration: 00:04:02.63, start: 0.000000, bitrate: 118 kb/s
    Stream #0:0(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
$ ffprobe -hide_banner output_with_just_-x.ogg 

Input #0, ogg, from 'output_with_just_-x':
  Duration: 00:04:02.65, start: 0.000000, bitrate: 117 kb/s
    Stream #0:0(eng): Audio: vorbis, 44100 Hz, stereo, fltp, 128 kb/s
    Metadata:
      LANGUAGE        : eng
      ENCODER         : Lavf56.4.101
Run Code Online (Sandbox Code Playgroud)