yt-dlp
需要安装ffmpeg
常用参数
获取视频信息(ID、扩展名、分辨率、文件大小和音频/视频编解码器等)
1 | yt-dlp -F https://www.youtube.com/xxxxxxxxxxxxxxxxx |

下载音频
1 | yt-dlp -f 140 https://www.youtube.com/xxxxxxxxxxxxxxxxx |
下载视频
1 | yt-dlp -f 137 https://www.youtube.com/xxxxxxxxxxxxxxxxx |
可以自由组合视频和音频,如:
1 | yt-dlp -f 137+140 https://www.youtube.com/xxxxxxxxxxxxxxxxx |
下载最好的视频和音频
1 | ./yt-dlp -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]' https://youtube.com/xxxxxxxxx |
其他选项
1 | 设置视频下载的大小限制 |
yt-dlp 格式选择
默认情况下,如果您不传递任何选项,yt-dlp 会尝试下载最佳可用质量。这通常相当于使用 -f bestvideo*+bestaudio/best。但是,如果启用了多个音频流 (--audio-multistreams),默认格式会更改为 -f bestvideo+bestaudio/best。类似地,如果没有可用的 ffmpeg,或者您使用 yt-dlp 将输出流到 stdout (-o -),默认格式将变为 -f best/bestvideo+bestaudio。
弃用警告:最新版本的 yt-dlp 可以同时使用 ffmpeg 将多个格式流式传输到 stdout。因此,在未来的版本中,默认设置将更改为 -f bv*+ba/b,类似于正常下载。如果您想保留 -f b/bv+ba 设置,建议在配置选项中明确指定。
格式选择的一般语法是 -f FORMAT(或 --format FORMAT),其中 FORMAT 是选择器表达式,即描述您希望下载的格式或格式的表达式。
简要说明
最简单的情况是请求特定格式;例如,使用 -f 22 可以下载格式代码等于 22 的格式。您可以使用 --list-formats 或 -F 获取特定视频的可用格式代码列表。请注意,这些格式代码是提取器特定的。
您还可以使用文件扩展名(当前支持 3gp、aac、flv、m4a、mp3、mp4、ogg、wav、webm)来下载特定文件扩展名的最佳质量格式,例如 -f webm 将下载以 webm 扩展名提供的最佳质量格式。
您可以使用 -f - 交互式地为每个视频提供格式选择器。
特殊名称
您还可以使用特殊名称选择特定的边缘案例格式:
all:单独选择所有格式mergeall:选择并合并所有格式(必须与--audio-multistreams、--video-multistreams或两者一起使用)b*、best*:选择包含视频或音频或两者的最佳质量格式(即;vcodec!=none或acodec!=none)b、best:选择同时包含视频和音频的最佳质量格式。等同于best*[vcodec!=none][acodec!=none]bv、bestvideo:选择最佳质量的视频格式。等同于best*[acodec=none]bv*、bestvideo*:选择包含视频的最佳质量格式。也可能包含音频。等同于best*[vcodec!=none]ba、bestaudio:选择最佳质量的音频格式。等同于best*[vcodec=none]ba*、bestaudio*:选择包含音频的最佳质量格式。也可能包含视频。(请勿使用!)w*、worst*:选择包含视频或音频的最差质量格式w、worst:选择同时包含视频和音频的最差质量格式。等同于worst*[vcodec!=none][acodec!=none]wv、worstvideo:选择最差质量的视频格式。等同于worst*[acodec=none]wv*、worstvideo*:选择包含视频的最差质量格式。也可能包含音频。等同于worst*[vcodec!=none]wa、worstaudio:选择最差质量的音频格式。等同于worst*[vcodec=none]wa*、worstaudio*:选择包含音频的最差质量格式。也可能包含视频。等同于worst*[acodec!=none]
过滤格式
您还可以通过在括号中放置条件来过滤视频格式,例如 -f "best[height=720]"(或 -f "[filesize>10M]",因为没有选择器的过滤器被解释为最佳)。
可用的数值元字段
可以使用以下数值元字段进行比较:<, <=, >, >=, =(等于),!=(不等于):
- filesize:已知的字节数(如果已知)
- filesize_approx:字节数的估计
- width:视频的宽度(如果已知)
- height:视频的高度(如果已知)
- aspect_ratio:视频的宽高比(如果已知)
- tbr:音频和视频的平均比特率(以 kbps 为单位)
- abr:平均音频比特率(以 kbps 为单位)
- vbr:平均视频比特率(以 kbps 为单位)
- asr:音频采样率(以赫兹为单位)
- fps:帧率
- audio_channels:音频通道的数量
- stretched_ratio:视频像素的宽高比,如果不是正方形
字符串比较
过滤器还支持以下字符串元字段的比较:=(等于),^=(以…开头),$=(以…结尾),*=(包含),~=(匹配正则表达式):
- url:视频 URL
- ext:文件扩展名
- acodec:正在使用的音频编码名称
- vcodec:正在使用的视频编码名称
- container:容器格式的名称
- protocol:用于实际下载的协议(小写,
http,https,rtsp,rtmp,rtmpe,mms,f4m,ism,http_dash_segments,m3u8或m3u8_native) - language:语言代码
- dynamic_range:视频的动态范围
- format_id:格式的简短描述
- format:格式的可读描述
- format_note:关于格式的附加信息
- resolution:宽度和高度的文本描述
任何字符串比较都可以用否定符号 ! 前缀,以产生相反的比较,例如 !*=(不包含)。如果比较的字符串包含空格或其他特殊字符(除了 ._-),则需要用双引号或单引号将比较对象引起来。
注意事项
请注意,上述元字段没有任何一个是保证存在的,因为这完全取决于特定提取器获得的元数据,即网站提供的元数据。提取器提供的任何其他可用字段也可以用于过滤。
对于未知值的格式将被排除,除非您在操作符后加上问号(?)。您可以组合格式过滤器,因此 -f "bv[height<=?720][tbr>500]" 选择高达 720p 的视频(或高度未知的视频),其比特率至少为 500 kbps。您还可以将过滤器与 all 一起使用,以下载满足过滤条件的所有格式,例如 -f "all[vcodec=none]" 选择所有仅音频格式。
格式选择器也可以使用括号进行分组;例如,-f "(mp4,webm)[height<480]" 将下载高度低于 480 的最佳预合并 mp4 和 webm 格式。
排序格式
您可以通过使用 -S (--format-sort) 来更改被视为最佳格式的标准。其一般格式为 --format-sort field1,field2....
可用字段
- hasvid:优先选择具有视频流的格式
- hasaud:优先选择具有音频流的格式
- ie_pref:格式偏好
- lang:语言偏好
- quality:格式的质量
- source:源的偏好
- proto:用于下载的协议(
https/ftps > http/ftp > m3u8_native/m3u8 > http_dash_segments > websocket_frag > mms/rtsp > f4f/f4m) - vcodec:视频编码(
av01 > vp9.2 > vp9 > h265 > h264 > vp8 > h263 > theora > other) - acodec:音频编码(
flac/alac > wav/aiff > opus > vorbis > aac > mp4a > mp3 > ac4 > eac3 > ac3 > dts > other) - codec:等同于
vcodec和acodec - vext:视频扩展名(
mp4 > mov > webm > flv > other)。如果使用--prefer-free-formats,则优先选择webm。 - aext:音频扩展名(
m4a > aac > mp3 > ogg > opus > webm > other)。如果使用--prefer-free-formats,顺序更改为ogg > opus > webm > mp3 > m4a > aac。 - ext:等同于
vext和aext - filesize:已知的确切文件大小(如果已知)
- fs_approx:近似文件大小
- size:确切文件大小(如果可用),否则为近似文件大小
- height:视频高度
- width:视频宽度
- res:视频分辨率,计算为最小维度。
- fps:视频帧率
- hdr:视频的动态范围(
DV > HDR12 > HDR10+ > HDR10 > HLG > SDR) - channels:音频通道数量
- tbr:总平均比特率(以 kbps 为单位)
- vbr:平均视频比特率(以 kbps 为单位)
- abr:平均音频比特率(以 kbps 为单位)
- br:平均比特率,
tbr/vbr/abr - asr:音频采样率(以 Hz 为单位)
下载播放列表
下载播放列表的第20个视频
1 | yt-dlp --playlist-items 20 <playlist_url> |
下载播放列表中第一到第五的视频
1 | yt-dlp --playlist-start 1 --playlist-end 5 <playlist_url> |
cookie
chrome扩展程序Cookie-Editor,导出Netscape格式的
1 | --cookies cookie.txt |
故障排除
”Unable to download video data: HTTP Error 403: Forbidden”错误
1 | 清除缓存 |
视频编码
AVC (Advanced Video Coding)
定义:
- AVC 是一种视频压缩标准,正式名称为 H.264。被广泛应用于视频编码和传输,特别是在数字视频广播、蓝光光盘、视频会议和流媒体服务中。
标准化:
- AVC 标准由 ITU-T(国际电信联盟电信标准化部门)和 ISO/IEC(国际标准化组织/国际电工委员会)共同开发。H.264 是其在 MPEG-4 标准中的第10部分。
压缩效率:
- AVC 提供了比其前身(如 MPEG-2)更高的压缩效率,能够在较低的比特率下提供较高的视频质量。这使得 AVC 成为许多视频应用的首选编码标准。
应用场景:
- AVC 被广泛用于:
- 高清视频(HD)和超高清(UHD)视频的编码。
- 在线流媒体服务(如 YouTube、Netflix 等)。
- 视频会议和网络直播。
- 蓝光光盘和其他光盘格式。
- AVC 被广泛用于:
技术特点:
- AVC 使用了多种先进的编码技术,包括运动补偿、变换编码、熵编码等,从而提高了编码效率。
- 支持多种分辨率和帧率,适用于不同的应用场景。
兼容性:
- AVC 是一种广泛支持的编码标准,几乎所有现代的视频播放器、设备和浏览器都能解码 H.264 编码的视频。
HEVC (High Efficiency Video Coding)
定义:
- HEVC (H.265) 是一种视频压缩标准,旨在提供比其前身 H.264 更高的压缩效率。能够在相同的视频质量下,减少大约 50% 的比特率,这使得特别适用于高分辨率视频(如 4K 和 8K)。
标准化:
- HEVC 是由 ITU-T(国际电信联盟电信标准化部门)和 ISO/IEC(国际标准化组织/国际电工委员会)共同开发的,作为 H.264 的继任者。
压缩效率:
- HEVC 采用了多种先进的编码技术,包括:
- 块结构:使用更灵活的编码块(CTU,编码树单元)来处理不同的图像区域。
- 运动补偿:改进了运动估计和补偿算法,以更有效地编码运动场景。
- 变换和量化:使用更高效的变换和量化方法来减少冗余数据。
- HEVC 采用了多种先进的编码技术,包括:
应用场景:
- HEVC 被广泛应用于:
- 高清(HD)、超高清(UHD)和 4K/8K 视频的流媒体和存储。
- 蓝光光盘(蓝光 UHD)格式。
- 视频会议、网络直播和广播等领域。
- HEVC 被广泛应用于:
兼容性:
- 尽管 HEVC 提供了显著的压缩优势,但由于其复杂性和专利问题,早期的硬件和软件支持较为有限。不过,随着时间的推移,越来越多的设备(如智能电视、流媒体播放器和手机)开始支持 HEVC 解码。
文件扩展名和标识:
- 在某些文件格式中,HEVC 编码的视频流可能会被标识为
hvc1(在 MP4 文件中)或hev1。
- 在某些文件格式中,HEVC 编码的视频流可能会被标识为
- HEVC(H.265)是一个高效的视频编码标准,能够在较低的比特率下提供高质量的视频,适用于 4K 和 8K 等高分辨率视频。
- 尽管 HEVC 在压缩效率上有显著优势,但其复杂性和专利问题曾导致其在某些场合的应用受到限制。
AV1 (AOMedia Video 1)
背景:
- AV1 是为了解决 AVC(H.264) 和 HEVC(H.265)等现有编码标准在版权和专利方面的限制而开发的。旨在提供更高的压缩效率,同时避免专利费用。
压缩效率:
- AV1 提供比 H.265 更好的压缩效率,通常可以在相同的视觉质量下减少约 30% 的比特率。这使得 AV1 特别适合于 4K 和更高分辨率的视频流。
应用场景:
- AV1 被设计用于互联网视频流、在线视频平台(如 YouTube、Netflix 等)和其他需要高效视频传输的场景。被广泛应用于视频流媒体、视频会议和视频存储等领域。
兼容性:
- AV1 的支持正在逐渐增加,许多现代浏览器(如 Chrome、Firefox 和 Edge)和硬件设备(如电视和流媒体播放器)开始支持 AV1 解码。
文件扩展名和标识:
- 在某些文件格式中,AV1 的编码可能会被标识为 AV01。例如,在 WebM 或 MP4 文件中,AV1 编码的视频流可能会被标记为
av01。
- 在某些文件格式中,AV1 的编码可能会被标识为 AV01。例如,在 WebM 或 MP4 文件中,AV1 编码的视频流可能会被标记为
VP9
VP9 是一种由 Google 开发的开放视频编码格式,主要用于高效的视频压缩和传输。是 VP8 的后续版本,旨在提供更好的压缩效率和更高的视频质量,尤其是在较低的比特率下。VP9 被广泛应用于 YouTube、Netflix 和其他流媒体服务中。以下是 VP9 编码的详细介绍:
- VP9 的背景和发展
- 开发者:VP9 是由 Google 开发的,作为 VP8 的继任者,旨在提高视频压缩效率。
- 发布:VP9 于 2013 年首次发布,并在 2014 年成为 WebM 项目的一个重要组成部分。
- 目标:VP9 的主要目标是提供与 H.265(HEVC)相似的压缩性能,但不收取专利费用。
- VP9 的特点
- 高效压缩:VP9 能够在相同的视觉质量下,比 VP8 提高约 50% 的压缩效率。这意味着在相同的比特率下,VP9 可以提供更好的视频质量,或者在相同的质量下,使用更低的比特率。
- 无专利费用:VP9 是开放的,用户可以自由使用,而无需支付专利费用,这使得在某些应用场景中比 H.265 更具吸引力。
- 支持多种分辨率:VP9 支持从低分辨率到超高分辨率(如 4K 和 8K)的多种视频分辨率。
- 编码技术
- 块编码:VP9 使用可变大小的块(从 64x64 到 8x8 像素)进行编码,这样可以根据视频内容的复杂性选择合适的块大小,从而提高编码效率。
- 运动补偿:VP9 采用高效的运动补偿技术,能够更好地预测视频帧之间的变化,减少冗余数据。
- 预测编码:VP9 使用帧间预测和帧内预测来减少数据量。帧间预测利用之前的帧来预测当前帧,帧内预测则在当前帧内进行压缩。
- 色彩空间:VP9 支持 YUV 4:2:0 和 YUV 4:4:4 色彩空间,可以处理高动态范围(HDR)视频。
- 解码支持
- 硬件解码:许多现代浏览器和设备(如智能手机、智能电视和流媒体播放器)都支持 VP9 的硬件解码,这使得 VP9 的播放更加高效和流畅。
- 软件解码:VP9 也可以通过软件解码实现,但相较于硬件解码,软件解码的性能会受到设备性能的影响。
- 应用场景
- 流媒体服务:VP9 被广泛用于 YouTube 和 Netflix 等流媒体平台,提供高质量的视频流。
- 视频会议:由于其高效的压缩性能,VP9 也被用于视频会议应用,以减少带宽消耗。
- 网页视频:VP9 是 WebM 格式的一部分,广泛用于浏览器中的在线视频播放。
- VP9 与其他编码标准的比较
- 与 H.264 的比较:VP9 在相同的比特率下通常提供更好的视频质量,但 H.264 的解码支持更广泛,尤其是在较老的设备上。
- 与 H.265(HEVC)的比较:VP9 和 H.265 提供相似的压缩效率,但 VP9 是开放标准,不涉及专利费用,这使得在某些情况下更具吸引力。

