如何从 youtube-dl 中选择视频质量?

A J*_*A J 403 command-line video downloaders youtube-dl

我已经在 14.04 中安装了 youtube-dl。

我可以通过以下命令下载视频,

$ youtube-dl [youtube-link]
Run Code Online (Sandbox Code Playgroud)

但我想知道如何选择 youtube 视频的可用像素质量(即 1080p、720p、480p 等

在软件描述中,他们说这是可能的(如下图所示),但是怎么做..

SS

mch*_*hid 543

要下载视频,请在命令后键入 URL,如下所示:

youtube-dl 'http://www.youtube.com/watch?v=P9pzm5b6FFY'
Run Code Online (Sandbox Code Playgroud)

要选择视频质量,首先使用该-F选项列出可用格式,这是一个示例,

youtube-dl -F 'http://www.youtube.com/watch?v=P9pzm5b6FFY'
Run Code Online (Sandbox Code Playgroud)

这是输出:

[youtube] Setting language
[youtube] P9pzm5b6FFY: Downloading webpage
[youtube] P9pzm5b6FFY: Downloading video info webpage
[youtube] P9pzm5b6FFY: Extracting video information
[info] Available formats for P9pzm5b6FFY:
format code extension resolution  note 
140         m4a       audio only  DASH audio , audio@128k (worst)
160         mp4       144p        DASH video , video only
133         mp4       240p        DASH video , video only
134         mp4       360p        DASH video , video only
135         mp4       480p        DASH video , video only
136         mp4       720p        DASH video , video only
17          3gp       176x144     
36          3gp       320x240     
5           flv       400x240     
43          webm      640x360     
18          mp4       640x360     
22          mp4       1280x720    (best)
Run Code Online (Sandbox Code Playgroud)

最好的质量是 22所以使用-f 22而不是-F像这样下载分辨率为 1280x720 的 MP4 视频:

youtube-dl -f 22 'http://www.youtube.com/watch?v=P9pzm5b6FFY'
Run Code Online (Sandbox Code Playgroud)

或者可以选择使用以下标志来自动下载作为单个文件可用的最佳音频和视频轨道:

youtube-dl -f best 'http://www.youtube.com/watch?v=P9pzm5b6FFY'
Run Code Online (Sandbox Code Playgroud)

如果您在复用过程中遇到任何错误或视频质量选择问题,您可以使用以下命令之一:

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 'http://www.youtube.com/watch?v=P9pzm5b6FFY'
Run Code Online (Sandbox Code Playgroud)

或者正如Gabriel Staples这里指出的那样,以下命令通常会选择实际最佳的单文件视频质量分辨率而不是视频质量比特率:

youtube-dl -f best 'http://www.youtube.com/watch?v=P9pzm5b6FFY'
Run Code Online (Sandbox Code Playgroud)

这些命令将确保您从视频中下载最高质量的 mp4 视频和 m4a 音频作为单个文件,或者将它们合并回单个 mp4(ffmpeg在我的情况下使用)。如果ffmpegavconv不可用,youtube-dl应回退到单个文件-f best option而不是默认值。

单击此处了解更多详细信息和一些不同的示例。

另外,单击以查看 Gabriel Staples 的相关回答。


来源:www.webupd8.org/2014/02/video-downloader-youtube-dl-gets.html

来源:github.com/rg3/youtube-dl

  • 确保您没有选择“DASH”。那将无法播放! (7认同)
  • 我的意思是“DASH 视频”。我尝试下载 `4K`,但都是 `DASH` 格式(`DASH` 允许 youtube 保留带宽)。它完全不同,它几乎无法播放。 (2认同)
  • 是的。Dash当然是可以玩的,但是你需要用类似`avconv`的东西来混合流。“4K”太慢了。 (2认同)

小智 178

您可以使用 下载 1080p youtube-dl,但您需要做一些额外的工作。通常,即使您可以在 youtube.com 上看到 1080p,它也只能下载 720p 作为其最大值。

运行-F以查看可用格式:

youtube-dl -F https://www.youtube.com/watch\?v\=-pxRXP3w-sQ

171         webm      audio only  DASH audio  115k , audio@128k (44100Hz), 2.59MiB (worst)
140         m4a       audio only  DASH audio  129k , audio@128k (44100Hz), 3.02MiB
141         m4a       audio only  DASH audio  255k , audio@256k (44100Hz), 5.99MiB
160         mp4       256x144     DASH video  111k , 12fps, video only, 2.56MiB
247         webm      1280x720    DASH video 1807k , 1fps, video only, 23.48MiB
136         mp4       1280x720    DASH video 2236k , 24fps, video only, 27.73MiB
248         webm      1920x1080   DASH video 3993k , 1fps, video only, 42.04MiB
137         mp4       1920x1080   DASH video 4141k , 24fps, video only, 60.28MiB
43          webm      640x360
18          mp4       640x360
22          mp4       1280x720    (best)
Run Code Online (Sandbox Code Playgroud)

请注意,youtube-dl将最后一个选项 1280x720 标记为“最佳”质量,这就是它默认下载的内容,但以 137 开头的行实际上是更高质量的 1920x1080。Youtube 已将标有 DASH 的行的视频和音频流分开,因此我们还需要选择最高质量的音频,在本例中是以 141 开头的行。然后我们youtube-dl这次再次运行,指定音频和视频:

youtube-dl -f 137+141 https://www.youtube.com/watch\?v\=-pxRXP3w-sQ
Run Code Online (Sandbox Code Playgroud)

它将下载 1080p 视频并将其与最高质量的音频自动合并。它还应该自动删除单独下载的部分。这种方法有点额外的工作,但会给你带来最好的结果。

  • 非常感谢,不知道137+141 (27认同)
  • 现在这是默认设置,但前提是您安装了 avconv (libav) 或 ffmpeg 来进行文件转换。对于 Windows,您希望将 `%APPDATA%\youtube-dl\config.txt` 中的 `--ffmpeg-location` 设置为 avconv/ffmpeg 的安装目录。如果您有一个低端系统,您可能还需要 `-f bestvideo[fps<=30]+bestaudio`,以避免 60fps 的视频。 (7认同)
  • 您的示例和其他示例为音频提供了简单的选择 - 也就是说,对于高质量,选择具有最高比特率值的音频。然而,我最近发现自己面临着在`DASH audio , opus @160k` 或`DASH audio 126k , audio@128k (44100Hz), 1.79MiB` 或`DASH audio 127k , m4a_dash container, aac @128k (44100Hz) 之间的选择, 1.94MiB`。我不得不选择但不确定质量,或者兼容性。 (3认同)
  • youtube-dl 最好的一点是它是多平台的。此解决方案不仅适用于 Linux,还适用于 Mac 和 Windows。谢谢! (2认同)

Wil*_*ilf 65

要选择特定的分辨率,您可以指定大小和音频质量,以便自动选择它们 - 所以对于 480p

-f 'bestvideo[height<=480]+bestaudio/best[height<=480]'
Run Code Online (Sandbox Code Playgroud)

bestvideo[height<=720]+bestaudio/best[height<=720]用于添加到在配置文件720P等,这可以~/.config/youtube-dl/config(甚至/etc/youtube-dl.conf),所以你没有得到超大下载:

mkdir ~/.config/youtube-dl
echo "-f 'bestvideo[height<=720]+bestaudio/best[height<=720]'" >> ~/.config/youtube-dl/config
Run Code Online (Sandbox Code Playgroud)

--ignore-config如果要禁用特定 youtube-dl 运行的配置文件,则可以使用。

请注意,它经常需要下载单独的视频和音频流并将它们合并。

有关更多示例,请参阅youtube-dl文档

  • +1 为`~/.config/youtube-dl/config` (3认同)
  • 我遇到了一个问题,即同一视频的不同片段具有相同分辨率的不同格式代码(例如,hls-1476 用于视频 1 of 2 和 hls-1665 用于视频 2 of 2,两者均为 540p)所以我不能只使用“-f hls-1476”或“-f hls-1665”,否则我会收到“错误:请求的格式不可用”您的命令示例帮助我检索了我想要的内容。 (2认同)

小智 30

下面给出了一些其他选项来下载除此处提到的以外的最佳质量视频,具体取决于您的方便:

下载可用的最佳 mp4 格式或任何其他最佳格式(如果没有可用的 mp4)

$ youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'
Run Code Online (Sandbox Code Playgroud)

下载可用的最佳格式,但不如 480p

$ youtube-dl -f 'bestvideo[height<=480]+bestaudio/best[height<=480]'
Run Code Online (Sandbox Code Playgroud)

下载最佳视频格式但不超过 50 MB

$ youtube-dl -f 'best[filesize<50M]'
Run Code Online (Sandbox Code Playgroud)

通过 HTTP/HTTPS 协议的直接链接下载可用的最佳格式

$ youtube-dl -f '(bestvideo+bestaudio/best)[protocol^=http]'
Run Code Online (Sandbox Code Playgroud)

参考:

直接来自 youtube-dl github 页面


Gab*_*les 14

如何获得可用的最佳视频质量。

此处获得最多选票的答案 应该是正确的,可以为您提供最佳的视频质量,但是......事实并非如此。bestvideo+bestaudio似乎只选择最佳的视频,那是最好的选择音频视频只仅音频,然后将其合并两个在一起。请注意,这似乎也与 youtube-dl 的默认行为相同。但是,在我正在查看的视频中,最好的质量是一个单独的、预先合并的文件,该文件已经采用了视频和音频组合的格式。该bestvideo+bestaudio选项没有选择这个质量最好的 720p 文件,因为它只寻找单独的视频和音频文件。详情如下。

解决方案?让它抓取包含视频和音频的最佳单个文件,而不是:

youtube-dl -f best https://youtu.be/FWGC9SqA3J0
Run Code Online (Sandbox Code Playgroud)

简而言之:使用-f best选项,而不是-f bestvideo+bestaudio选项!

证明:

(注意:下面的所有电路原理图实际上是来自这个电气工程相关视频教程的截图视频一-LTspice 入门)。

在此处输入图片说明

更具体地说,请参见下面的运行结果

youtube-dl -F https://youtu.be/FWGC9SqA3J0
Run Code Online (Sandbox Code Playgroud)

为了查看哪些视频“格式”可供下载:

gabriel ~ $ youtube-dl -F https://youtu.be/FWGC9SqA3J0
[youtube] FWGC9SqA3J0: Downloading webpage
[youtube] FWGC9SqA3J0: Downloading video info webpage
[youtube] FWGC9SqA3J0: Downloading MPD manifest
[youtube] FWGC9SqA3J0: Downloading MPD manifest
[info] Available formats for FWGC9SqA3J0:
format code  extension  resolution note
139          m4a        audio only DASH audio   50k , m4a_dash container, mp4a.40.5@ 48k (22050Hz), 2.30MiB
249          webm       audio only DASH audio   51k , opus @ 50k, 2.34MiB
250          webm       audio only DASH audio   62k , opus @ 70k, 2.85MiB
171          webm       audio only DASH audio  103k , vorbis@128k, 4.68MiB
251          webm       audio only DASH audio  109k , opus @160k, 5.10MiB
140          m4a        audio only DASH audio  130k , m4a_dash container, mp4a.40.2@128k (44100Hz), 6.13MiB
160          mp4        256x138    DASH video  108k , mp4_dash container, avc1.4d400b, 24fps, video only
134          mp4        640x348    DASH video  142k , mp4_dash container, avc1.4d401e, 24fps, video only, 3.42MiB
133          mp4        426x232    DASH video  242k , mp4_dash container, avc1.4d400c, 24fps, video only
136          mp4        1280x694   DASH video  473k , mp4_dash container, avc1.4d401f, 24fps, video only, 8.01MiB
135          mp4        854x464    DASH video 1155k , mp4_dash container, avc1.4d4014, 24fps, video only
17           3gp        176x144    small , mp4v.20.3, mp4a.40.2@ 24k, 1.63MiB
36           3gp        320x174    small , mp4v.20.3, mp4a.40.2, 2.98MiB
43           webm       640x360    medium , vp8.0, vorbis@128k, 7.44MiB
18           mp4        640x348    medium , avc1.42001E, mp4a.40.2@ 96k, 8.54MiB
22           mp4        1280x694   hd720 , avc1.64001F, mp4a.40.2@192k (best) 
Run Code Online (Sandbox Code Playgroud)

请注意,第 22 行在其最右侧显示“(最佳)”。这是提供 hd720 质量的唯一选项,这是我在 YouTube 上的网络浏览器中观看此视频时所能获得的最佳质量。它是最清晰的,具有最好的定义。当我使用最佳答案推荐的任一命令时:

youtube-dl -f bestvideo+bestaudio https://youtu.be/FWGC9SqA3J0
Run Code Online (Sandbox Code Playgroud)

或者:

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 https://youtu.be/FWGC9SqA3J0
Run Code Online (Sandbox Code Playgroud)

我最终得到的视频质量较低/分辨率较低,并且文件较大。我不完全理解它,但该-f best选项绝对是唯一真正为我提供最佳分辨率的选项。

这是我正在观看教程视频中的一些屏幕截图,其中显示了视频中的电子电路图。请注意后一个质量如何更高且更清晰(单击每个图像并在放大视图中比较小字体):

  1. 使用此处接受的较低质量 -f bestvideo+bestaudio选项作为正确答案(或仅使用默认选项:)youtube-dl https://youtu.be/FWGC9SqA3J0
  • 在此处输入图片说明
  • 注意顶部的图标是多么的模糊,打开的窗口和里面的小字是多么难以阅读!
  • 这比我直接在浏览器中在线观看 YouTube 时获得的质量要得多。
  • 此选项还需要更多的存储因为某些原因:该视频为18.0 MB,花了更长的时间我的系统下载和重新组合(音频+视频),比-f best下面的选项,其中只有做一个下载和没有重组因为它已经是一个文件了。
  1. 使用我推荐的更高质量的 -f best选项:
  • 在此处输入图片说明
  • 注意顶部的小图标和窗口中的小字体是多么清晰!
  • 我直接在 YouTube 浏览器中以最高分辨率观看时获得的分辨率相同
  • 由于某种原因,此选项也占用较少的内存:视频为 14.8 MB。

补充阅读:

详情请参阅man youtube-dl

  • 奇怪的是,我看到 1920x1080 选项的列表,但 1280x720 (hd720) 选项仍然显示“最佳” (4认同)
  • 您所有的屏幕截图都显示了一些电子产品。 (2认同)
  • 对于大多数高清视频,最佳答案仍然是要走的路,因为“最佳”本身往往更喜欢格式代码 22(即使 1080p+ 可用),或者它决定合并 mp4 视频(通常甚至不是最高的)会很棒。分辨率)与 opus 音频,需要 mkv 容器。 (2认同)

ccp*_*zza 7

提示输入格式的 bash 包装器脚本,其中包括所有可用的格式,包括纯音频、纯视频。

接受绝对 youtube URL 和视频 ID。

#!/ usr/bin/env bash
# Download youtube video with desired quality

# youtube-dl accepts both fully qualified URLs and video id's such as AQcQgfvfF1M

url="$*"

echo "Fetching available formats for $url..."
youtube-dl -F "$url"
read -p "Please enter the desired format id: " FORMAT

## download the video
youtube-dl -f $FORMAT -g "$url"

## stream the video with mpv (no local file created)
# mpv --cache=1024 $(youtube-dl -f $FORMAT -g "$url")
Run Code Online (Sandbox Code Playgroud)

示例输出

    yt.sh https://m.youtube.com/watch?v=Dax_tnZRExc
    [youtube] Dax_tnZRExc: Downloading webpage
    [youtube] Dax_tnZRExc: Downloading video info webpage
    [youtube] Dax_tnZRExc: Extracting video information
    [youtube] Dax_tnZRExc: Downloading MPD manifest
    [info] Available formats for Dax_tnZRExc:
    format code  extension  resolution note
    139          m4a        audio only DASH audio   49k , m4a_dash container, mp4a.40.5@ 48k (22050Hz), 308.75KiB
    249          webm       audio only DASH audio   50k , opus @ 50k, 271.91KiB
    250          webm       audio only DASH audio   70k , opus @ 70k, 366.63KiB
    171          webm       audio only DASH audio  118k , vorbis@128k, 652.50KiB
    140          m4a        audio only DASH audio  127k , m4a_dash container, mp4a.40.2@128k (44100Hz), 820.00KiB
    251          webm       audio only DASH audio  130k , opus @160k, 705.84KiB
    160          mp4        256x144    DASH video  109k , avc1.4d400c, 13fps, video only, 703.64KiB
    278          webm       256x144    144p  111k , webm container, vp9, 25fps, video only, 439.72KiB
    242          webm       426x240    240p  243k , vp9, 25fps, video only, 623.95KiB
    133          mp4        426x240    DASH video  252k , avc1.4d4015, 25fps, video only, 1.54MiB
    134          mp4        640x360    DASH video  388k , avc1.4d401e, 25fps, video only, 1.24MiB
    243          webm       640x360    360p  458k , vp9, 25fps, video only, 1.19MiB
    135          mp4        854x480    DASH video  761k , avc1.4d401e, 25fps, video only, 2.40MiB
    244          webm       854x480    480p  893k , vp9, 25fps, video only, 2.00MiB
    136          mp4        1280x720   DASH video 1382k , avc1.4d401f, 25fps, video only, 4.56MiB
    247          webm       1280x720   720p 1754k , vp9, 25fps, video only, 3.94MiB
    137          mp4        1920x1080  DASH video 2350k , avc1.640028, 25fps, video only, 8.48MiB
    248          webm       1920x1080  1080p 2792k , vp9, 25fps, video only, 8.09MiB
    17           3gp        176x144    small , mp4v.20.3, mp4a.40.2@ 24k
    36           3gp        320x180    small , mp4v.20.3, mp4a.40.2
    43           webm       640x360    medium , vp8.0, vorbis@128k
    18           mp4        640x360    medium , avc1.42001E, mp4a.40.2@ 96k
    22           mp4        1280x720   hd720 , avc1.64001F, mp4a.40.2@192k (best)
    Please enter the desired format #
Run Code Online (Sandbox Code Playgroud)


qwr*_*qwr 5

以下是对 youtube-dl 新手的流/格式的解释。

一些视频网站(例如 youtube)不仅提供不同分辨率的视频下载,而且在 youtube-dl 中提供称为格式的选项来分别下载视频和音频。对于 YouTube 来说,它只会分别提供最高质量的视频和最高质量的音频。-F以下是使用标志显示所有可用格式的示例输出:

$ youtube-dl -F https://youtube.com/watch?v=iYWzMvlj2RQ
[youtube] iYWzMvlj2RQ: Downloading webpage
[youtube] iYWzMvlj2RQ: Downloading embed webpage
[youtube] iYWzMvlj2RQ: Refetching age-gated info webpage
[info] Available formats for iYWzMvlj2RQ:
format code  extension  resolution note
249          webm       audio only tiny   50k , opus @ 50k (48000Hz), 238.14KiB
250          webm       audio only tiny   59k , opus @ 70k (48000Hz), 284.22KiB
251          webm       audio only tiny  118k , opus @160k (48000Hz), 553.74KiB
140          m4a        audio only tiny  157k , m4a_dash container, mp4a.40.2@128k (44100Hz), 628.52KiB
394          mp4        192x144    144p   51k , av01.0.00M.08, 30fps, video only, 241.57KiB
278          webm       192x144    144p   72k , webm container, vp9, 30fps, video only, 309.32KiB
395          mp4        320x240    240p   97k , av01.0.00M.08, 30fps, video only, 283.55KiB
160          mp4        192x144    144p  111k , avc1.4d400c, 15fps, video only, 524.55KiB
242          webm       320x240    240p  135k , vp9, 30fps, video only, 328.15KiB
396          mp4        480x360    360p  184k , av01.0.01M.08, 30fps, video only, 472.21KiB
243          webm       480x360    360p  221k , vp9, 30fps, video only, 560.40KiB
134          mp4        480x360    360p  240k , avc1.4d401e, 30fps, video only, 826.64KiB
133          mp4        320x240    240p  247k , avc1.4d400d, 30fps, video only, 1.16MiB
397          mp4        640x480    480p  302k , av01.0.04M.08, 30fps, video only, 801.75KiB
244          webm       640x480    480p  338k , vp9, 30fps, video only, 912.64KiB
135          mp4        640x480    480p  517k , avc1.4d401e, 30fps, video only, 1.71MiB
398          mp4        960x720    720p  541k , av01.0.05M.08, 30fps, video only, 1.48MiB
247          webm       960x720    720p  604k , vp9, 30fps, video only, 1.72MiB
399          mp4        1440x1080  1080p  893k , av01.0.08M.08, 30fps, video only, 2.55MiB
248          webm       1440x1080  1080p  981k , vp9, 30fps, video only, 2.99MiB
136          mp4        960x720    720p 1046k , avc1.4d401f, 30fps, video only, 3.47MiB
137          mp4        1440x1080  1080p 1923k , avc1.640028, 30fps, video only, 7.30MiB
18           mp4        480x360    360p  316k , avc1.42001E, 30fps, mp4a.40.2@ 96k (44100Hz), 1.50MiB
22           mp4        960x720    720p  858k , avc1.64001F, 30fps, mp4a.40.2@192k (44100Hz) (best)
Run Code Online (Sandbox Code Playgroud)

因此有很多不同的格式,但有些格式被标记为“仅音频”或“仅视频”。如果我选择使用指定的格式代码(例如 with )下载其中一种格式-f 137,我实际上会得到一个音频文件或一个没有音频的视频文件,这通常不是您想要的。如果我安装了 ffmpeg 并使用 指定了视频和音频格式-f 137+140,那么 youtube-dl 会下载视频和音频,然后将它们组合成一个视频文件。

如果您没有安装 ffmpeg,youtube-dl 将默认选择具有音频和视频的最高质量格式。最大分辨率为 720p(通常由格式代码 22 指定,因此您可以使用 进行下载-f 22)。如果您确实安装了 ffmpeg,youtube-dl 将能够下载真正的最佳质量视频(1080p 或更高,如果可用)和最佳质量音频,并在下载 mux(合并)后将它们合并到一个视频文件中,所以这是我推荐的。

摘要:安装 ffmpeg,然后您将能够简单地在youtube-dl [youtube url]没有任何标志的情况下在一个输出视频文件中自动获得最佳质量的视频和音频。