From f1659ca18a65089a3eb72cf59b621b06aa01aea1 Mon Sep 17 00:00:00 2001 From: dichgrem Date: Wed, 27 Aug 2025 12:18:02 +0800 Subject: [PATCH] update:yt-dlp --- content/Network-aria2.md | 4 +- content/Network-download-1.md | 2 +- content/Network-yt-dlp.md | 159 ++++++++++++++++++++++------------ 3 files changed, 108 insertions(+), 57 deletions(-) diff --git a/content/Network-aria2.md b/content/Network-aria2.md index 00f07e2..57e8c58 100644 --- a/content/Network-aria2.md +++ b/content/Network-aria2.md @@ -1,9 +1,9 @@ +++ -title = "网络艺术:Aria2使用指南" +title = "下载系列(3):Aria2使用指南" date = 2025-04-15 [taxonomies] -tags = ["网络艺术"] +tags = ["Network"] +++ 前言 Aria2是一款开源、跨平台的命令行界面下载管理器,常常被各种下载器软件使用。 diff --git a/content/Network-download-1.md b/content/Network-download-1.md index 575d926..aad1e2b 100644 --- a/content/Network-download-1.md +++ b/content/Network-download-1.md @@ -1,5 +1,5 @@ +++ -title = "网络艺术:下载技术的历史" +title = "下载系列(1):下载技术的历史" date = 2025-04-11 [taxonomies] diff --git a/content/Network-yt-dlp.md b/content/Network-yt-dlp.md index 314fa7d..37f45e0 100644 --- a/content/Network-yt-dlp.md +++ b/content/Network-yt-dlp.md @@ -1,38 +1,40 @@ +++ -title = "网络艺术:Yt-dlp使用指南" +title = "下载系列(2):Yt-dlp使用指南" date = 2025-04-12 [taxonomies] -tags = ["网络艺术"] +tags = ["Network"] +++ -前言 有时候我们想要视频保存到本地以便离线回看。yt-dlp是一款功能强大的命令行工具,专注于下载视频与音频内容,支持数千个平台,是开源下载工具爱好者的常用选择。 +前言 yt-dlp是一款功能强大的命令行工具,专注于下载视频与音频内容,支持数千个平台,是开源下载工具爱好者的常用选择。 +有时候我们想要下载网络上的某些视频,比如Bilibili,YouTube等等,但它们没有提供下载按钮,这时候就可以用开源的yt-dlp来进行下载。和Aria2一样,很多下载软件的核心就是yt-dlp. -## 历史沿革:从 youtube-dl 到 yt-dlp +## 历史 - **起源与演进** - `youtube-dl` 由 Ricardo García González 于 **2006 年**创建,最初仅支持 YouTube,随后扩展至其他网站,成为 GitHub 上最受欢迎的开源下载项目之一.项目维护者在 2011 年、2021 年等阶段陆续交替,由 phihag、dstftw 等接手.2020 年,唱片业协会(RIAA)发起 DMCA 要求删除该项目,虽一度被移除,但在公众与 EFF 的推动下于当年 11 月恢复,并促使 GitHub 改进相关策略. +`youtube-dl` 由 Ricardo García González 于 **2006 年**创建,最初仅支持 YouTube,随后扩展至其他网站,成为 GitHub 上最受欢迎的开源下载项目之一.项目维护者在 2011 年、2021 年等阶段陆续交替,由 phihag、dstftw 等接手.2020 年,唱片业协会(RIAA)发起 DMCA 要求删除该项目,虽一度被移除,但在公众与 EFF 的推动下于当年 11 月恢复,并促使 GitHub 改进相关策略. - **停滞,youtube-dlc → yt-dlp 的诞生** - 随着开发进度放缓,社区于 2020 年衍生出 youtube-dlc 分支,随即在 **2021 年**演变为更活跃的 `yt-dlp` 项目,它继承了 youtube-dl 的核心功能,并引入更多改进,包括更好的格式选择、多线程下载等,迅速在 Linux 发行版中取代 youtube-dl (如 Ubuntu 22.04 之后). +随着开发进度放缓,社区于 2020 年衍生出 youtube-dlc 分支,在**2021 年**演变为更活跃的 `yt-dlp` 项目,它继承了 youtube-dl 的核心功能,并引入更多改进,包括更好的格式选择、多线程下载等,成为了GitHub上star最多的项目之一. - **重构与功能拓展** - `yt-dlp` 从 youtube-dlc 完全重构,新增许多 extractor(解析器)、改进配置与默认行为,还扩展了插件系统和兼容性支持. +`yt-dlp` 从 youtube-dlc 完全重构,新增许多 extractor(解析器)、改进配置与默认行为,还扩展了插件系统和兼容性支持. -## 各平台安装指南 +## 安装 -- 通用(Linux/macOS/Windows) +### Windows -下载官方最新可执行文件: +从yt-dlp官方GitHub上下载exe二进制文件: -```bash -sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp -sudo chmod a+rx /usr/local/bin/yt-dlp -```` +[yt-dlp](https://github.com/yt-dlp/yt-dlp/releases/tag/2025.08.22) + +将其放到一个目录下,比如``C:\Users\<你的用户名>\yt-dlp\yt-dlp.exe``,随后添加环境变量。 + +> 添加环境变量:Win键搜索“环境变量”,打开“编辑系统环境变量”,点击最下方的“环境变量”,选择“系统变量”中的path,点击“编辑”,新建一个变量,将上面的目录 C:\Users\<你的用户名>\yt-dlp\ 写入,注意去掉前后引号,随后确定-确定-确定退出。 更新版本: @@ -46,15 +48,21 @@ yt-dlp -U python3 -m pip install -U yt-dlp ``` -- Linux 发行版仓库 - -各发行版可能提供略滞后的 yt-dlp: +### Linux 发行版 - Debian / Ubuntu:`sudo apt install yt-dlp` - Arch / Manjaro:`sudo pacman -S yt-dlp` -- Fedora:`sudo dnf install yt-dlp` 等。 +- Fedora:`sudo dnf install yt-dlp` +- Nixos: +``` +{pkgs, ...}: { + home.packages = with pkgs; [ + peazip + ]; +} +``` -- Android(Termux) +### Android(Termux) ```bash pkg update && pkg upgrade @@ -62,7 +70,84 @@ pkg install python libexpat openssl ffmpeg python3 -m pip install -U yt-dlp ``` -## 常用命令 +## 下载实战 + +- **下载B站带字幕视频**: + +``` +yt-dlp "https://www.bilibili.com/video/BVxxxxx" --write-subs --embed-subs --sub-langs all,-live_chat + +--write-subs: 将字幕文件下载为单独文件 (如 .vtt 或 .ass) + +--embed-subs: 将下载的字幕嵌入到视频文件中(如果格式支持) + +--sub-langs all,-live_chat: 下载所有字幕语言,但排除像“弹幕/实时聊天”之类的非标准字幕流 +``` + +- **下载YouTube视频** + +先使用这个命令查看可用格式: +``` +yt-dlp -F https://www.youtube.com/watch?v=xxxxxxxxxxxx +``` +然后它会列举出所有可用的格式,如下: +``` +[youtube] MgtOAVOXBWo: Downloading webpage +[youtube] MgtOAVOXBWo: Downloading tv client config +[youtube] MgtOAVOXBWo: Downloading tv player API JSON +[youtube] MgtOAVOXBWo: Downloading ios player API JSON +[youtube] MgtOAVOXBWo: Downloading m3u8 information +[info] Available formats for MgtOAVOXBWo: +ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC MORE INFO +────────────────────────────────────────────────────────────────────────────────────────────────────────── +sb2 mhtml 48x27 0 │ mhtml │ images storyboard +sb1 mhtml 80x45 0 │ mhtml │ images storyboard +sb0 mhtml 160x90 0 │ mhtml │ images storyboard +233 mp4 audio only │ m3u8 │ audio only unknown Untested, Default, low +234 mp4 audio only │ m3u8 │ audio only unknown Untested, Default, high +602 mp4 256x144 15 │ ~ 9.23MiB 81k m3u8 │ vp09.00.10.08 81k video only Untested +269 mp4 256x144 30 │ ~ 14.94MiB 130k m3u8 │ avc1.4D400C 130k video only Untested +603 mp4 256x144 30 │ ~ 15.90MiB 139k m3u8 │ vp09.00.11.08 139k video only Untested +229 mp4 426x240 30 │ ~ 33.33MiB 291k m3u8 │ avc1.4D4015 291k video only Untested +604 mp4 426x240 30 │ ~ 25.82MiB 225k m3u8 │ vp09.00.20.08 225k video only Untested +230 mp4 640x360 30 │ ~ 73.50MiB 642k m3u8 │ avc1.4D401E 642k video only Untested +605 mp4 640x360 30 │ ~ 55.73MiB 487k m3u8 │ vp09.00.21.08 487k video only Untested +231 mp4 854x480 30 │ ~104.35MiB 911k m3u8 │ avc1.4D401F 911k video only Untested +606 mp4 854x480 30 │ ~ 94.79MiB 827k m3u8 │ vp09.00.30.08 827k video only Untested +311 mp4 1280x720 60 │ ~330.73MiB 2887k m3u8 │ avc1.4D4020 2887k video only Untested +612 mp4 1280x720 60 │ ~197.04MiB 1720k m3u8 │ vp09.00.40.08 1720k video only Untested +312 mp4 1920x1080 60 │ ~486.64MiB 4248k m3u8 │ avc1.64002A 4248k video only Untested +617 mp4 1920x1080 60 │ ~369.06MiB 3222k m3u8 │ vp09.00.41.08 3222k video only Untested +623 mp4 2560x1440 60 │ ~ 1.00GiB 8945k m3u8 │ vp09.00.50.08 8945k video only Untested +``` +我们下载312和233,即视频和音频,使用以下命令: +``` +yt-dlp -f "312+233" -o "<新视频的名字,要短一点>.%(ext)s" https://www.youtube.com/watch?v=xxxxxxxxxxxx +``` +这行命令会自动将下载的312的1080p/H.264的视频和233的音频合并为一个mp4视频,注意新的名称不能太长,否则会下载失败。 + +如果要下载带字幕的视频,则使用 +``` +yt-dlp -f "312+233" --write-subs --write-auto-subs --embed-subs --sub-langs "zh.*,en.*" -o "<新视频的名字,要短一点>.%(ext)s" https://www.youtube.com/watch?v=xxxxxxxxxxx +``` +这个命令会: + +- 下载1080p视频 +- 下载中文和英文字幕(包括自动生成的) +- 将字幕嵌入到视频文件中 +- 同时保存单独的字幕文件 + +- 参数说明 + +``` +--write-subs: 下载手动字幕 +--write-auto-subs: 下载自动生成的字幕 +--embed-subs: 将字幕嵌入到视频中 +--sub-langs "zh.*": 指定下载中文字幕(所有中文变体) +--sub-format srt: 指定字幕格式(可选) +``` + +## 常用参数 - **下载视频**: @@ -151,40 +236,6 @@ python3 -m pip install -U yt-dlp 在 `~/.config/yt-dlp/config` 文件中添加习惯参数,如下载路径、格式偏好等。 -- **比如下载B站带字幕视频的命令**: - -``` -yt-dlp "https://www.bilibili.com/video/BVxxxxx" --write-subs --embed-subs --sub-langs all,-live_chat - ---write-subs: 将字幕文件下载为单独文件 (如 .vtt 或 .ass) - ---embed-subs: 将下载的字幕嵌入到视频文件中(如果格式支持) - ---sub-langs all,-live_chat: 下载所有字幕语言,但排除像“弹幕/实时聊天”之类的非标准字幕流 -``` - ---- - -## 进阶技巧 - -- **FFmpeg 合并支持**:若视频与音频分离,需安装 FFmpeg 才能完成合并。 - -- **处理地理限制**:结合 `--proxy` 或 `--geo-bypass` 等选项使用 VPN/代理绕过区域限制。 - -- **应对下载失败(如 403)**: - - ```bash - yt-dlp --rm-cache-dir - ``` - -- **设置 UA、Referer、打印请求头调试**: - - ```bash - --add-headers "User-Agent: ..." --print http_headers - ``` - -- **Stability & 更新问题**:建议避免使用发行版中的旧版本,推荐使用官方可执行或 pip 方法。 - --- **Done.**