yt-dlp视频下载器基础使用记录
开源地址
开始配置
- 在Github下载编译好的FFmpeg,并配置好环境变量
- 下载yt-dlp的Windows版本的releases,并放在FFmpeg的同级目录下。(通常是
bin
) - 安装Chrome扩展程序Get-cookies.txt-LOCALLY,选择性导出你所要下载视频的网站
cookies
,以供yt-dlp下载高清视频
基础使用
查找指定url的所有视频/音频源
1 | yt-dlp --cookies cookies/file/path -F url |
示例:
1 | C:\Users\Administrator>yt-dlp --cookies www.nicovideo.jp_cookies.txt -F https://www.nicovideo.jp/watch/sm44335943 |
下载指定视频+音频
1 | yt-dlp --cookies cookies/file/path url -f videoID+audioID |
不查找,直接下载最高品质视频+音频
1 | yt-dlp --cookies cookies/file/path url -f bestvideo+bestaudio |
其他
下载最高品质报错
那就先查找,看返回就知道啥情况了
1 | ID EXT RESOLUTION │ PROTO │ VCODEC ACODEC |
这种就要手动指定序号下载,一般最下面的就是最高品质的。
报错文件路径不合法
一般情况下,yt-dlp会帮你自动把禁止出现在Windows文件名中的非法半角字符转换为全角字符,并不会出现文件名不合法的情况。经验证,此类报错大部分情况为文件名长度超出Windows允许长度导致的。对于此类情况,手动指定较短文件名即可。
被人机验证卡了
加参数--extractor-args "generic:impersonate"
提高重试次数
1 | -R, --retries RETRIES |
使用conf文件简化命令输入
yt-dlp同级目录下新建yt-dlp.conf
,存入cookies
、paths
等参数。
1 | --cookies cookies/file/path |
调用外部下载器
1 | --external-downloader aria2c |
一种进阶下载法
问题提出
对于一些小众且不规范的网站,使用yt-dlp批量下载视频的时候会出现很多奇奇怪怪的问题,我以tokyomotion这个网站为例进行一个批量下载的示例。
首先说这个网站存在的问题
- 不识别视频列表,想要下载某个搜索结果或某个用户主页的所有视频时,直接输url完全找不到对应视频列表。
- 无法使用
bestvideo+bestaudio
,并且使用-F
发现视频下载用的-f
的ID不统一。例如下面的2种情况,有的视频有HD
和SD
两种,有的只有SD
,而且详细信息都是unknown
,bestvideo+bestaudio
根本没法用。1
2
3
4ID EXT RESOLUTION │ PROTO │ VCODEC ACODEC
───────────────────────────────────────────
SD mp4 unknown │ https │ unknown unknown
HD mp4 unknown │ https │ unknown unknown1
2
3ID EXT RESOLUTION │ PROTO │ VCODEC ACODEC
───────────────────────────────────────────
SD mp4 unknown │ https │ unknown unknown - 视频名重复,yt-dlp识别的视频ID也重复,无论是用
--download-archive downloaded.txt
还是-o "%(title)s [%(webpage_url_basename)s].%(ext)s"
又或是-o "%(title)s [%(id)s].%(ext)s"
都会因误识别非重复视频导致部分视频下载丢失。下面是一个示例。yt-dlp默认识别的视频ID是最后面的1
https://www.tokyomotion.net/video/5070506/uise
uise
,对于这个网站,这个ID和视频名重复,真正的ID应该是前面的5070506
,这就导致yt-dlp提供的ID识别视频方法全部失效。
解决方案
- 首先手动或者使用脚本提取你要下载的视频连接出来,保存至一个
url.txt
,内容类似于1
2
3
4
5
6https://www.tokyomotion.net/video/4967756/uise
https://www.tokyomotion.net/video/4967737/uise
https://www.tokyomotion.net/video/4877359/uise
https://www.tokyomotion.net/video/4766461/uise
...
... - 使用脚本手动提取视频ID。脚本内容可根据自己实际情况修改
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24import re
# 输入文件(每行一个原始链接)
input_file = "url.txt"
# 输出文件(格式:video_id URL)
output_file = "url_modified.txt"
with open(input_file, "r", encoding="utf-8") as infile, \
open(output_file, "w", encoding="utf-8") as outfile:
for line in infile:
line = line.strip()
if not line:
continue
# 提取 URL 中的数字 ID
match = re.search(r"/video/(\d+)/", line)
if match:
video_id = match.group(1)
outfile.write(f"{video_id} {line}\n")
else:
print(f"跳过无法识别的行: {line}") - 用
bat
批处理,并且允许选择视频画质。对于视频画质,如果遇到类似于下面的,1
2
3
4
5
6
7@echo off
for /f "tokens=1,2" %%A in (url_modified.txt) do (
yt-dlp --cookies "www.tokyomotion.net_cookies.txt" ^
--output "%%A - %%(title)s.mp4" ^
-f "HD/SD" ^
%%B
)可以用1
2
3
4
5
6ID EXT RESOLUTION │ PROTO │ VCODEC ACODEC NOTE
──────────────────────────────────────────────────────────
18 mp4 640x360 │ https │ unknown unknown medium
22 mp4 1280x720 │ https │ unknown unknown hd720
137 mp4 1920x1080 │ https │ unknown unknown video only
140 m4a audio only │ https │ unknown unknown-f "140+137/22/18"
这样的参数来表示优先级顺序,即使遇到音视频分离类型的视频也没问题。
同类工具推荐
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 筱晓の第二小窝~!