# yt-dlp 下载 Youtube 视频备忘

因为众所周知的原因，国内无法访问 YouTube，而我又有需求将一些 YouTube 独家的视频分享给国内的小伙伴。这就必然需要将视频下载下来，但现在 Youtube 对高清晰度的视频早已做了音视频分流，很难直接下载一个完整的高清视频，需要分别下载视频、音频、字幕然后再本地合并，恰巧 yt-dlp 便可满足我的需求，特记录一下操作备忘。

## 1 使用代理

方法很简单，`--proxy` 参数，后接代理服务器地址（标准格式）

我这里设置了一个 alias，就不必每次都指定代理了。

`alias yt-dlp="yt-dlp --proxy socks5://localhost:1080"`



## 2 查询当前视频的信息（可选）

`-F` 参数即可。

示例：`yt-dlp -F https://www.youtube.com/watch\?v\=cmp35bFYHLw`

![1.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1654700395668/OA09QTL-N.png align="left")


## 3 下载对应音视频并合并

注：如果需要合并视频，需要提前安装 `ffmpeg` 。如果没有安装直接使用参数，不会执行合并操作，会报错。

下载指定编号（步骤2中查询到的）的视频，使用 `-f` 参数，后接 ID。如果不想指定 ID，可以使用参数 `'bv*+ba' ` 自动匹配最佳视频和音频。

合并视频使用 `--merge-output-format` 参数，后接指定格式。

示例：`yt-dlp -f 271+140 --merge-output-format mp4 https://www.youtube.com/watch?v=cmp35bFYHLw`


![2.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1654700450725/ZlG4Ts4-8.png align="left")

![3.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1654700458389/X0zDQq6Xo.png align="left")


## 4 字幕

`yt-dlp --sub-lang <语言> --write-sub --convert-subs srt --skip-download <URL>`

常见语言： `zh-Hant` 表示繁体中文， `zh-Hans` 表示简体中文， `en` 表示英语。

- `--convert-subs srt` 表示转为 srt 格式

- `--skip-download` 表示只下载字幕，不下载视频文件

- `--write-sub` 表示下载字幕，若为自动翻译字幕，则为 `--write-auto-sub`


## 5 字幕文件合并到视频

该部分推荐借助 `ffmpeg` 完成。

`ffmpeg -i <视频文件> -vf subtitles=<字幕文件> -strict -2 <最终文件>`
