youtube-dl 能够方便的下载网页视频,虽然不是所有网站视频都可以下载,但已经能够覆盖很多网站。这里介绍一下如何使用youtube-dl有效下载视频。

安装youtube-dl

1
pip install youtube-dl --upgrade

配置代理

如果使用了代理,可以使用如下配置

1
2
3
4
# 打开本地配置文件
vim .bashrc
# 添加如下内容
alias youtube-dl = "youtube-dl --no-check-certificate --proxy socks5://127.0.0.1:1080"

列出有哪些格式视频

1
2
3
youtube-dl --list-formats https://www.yyy.com/video/BV1TW411g7Tf/
# 或者
youtube-dl -F https://www.yyy.com/video/BV1TW411g7Tf/

下载指定格式视频和音频

1
youtube-dl -f22+140 https://www.yyy.com/video/BV1TW411g7Tf/

下载所有格式视频

1
youtube-dl --all-formats https://www.yyy.com/video/BV1TW411g7Tf/

下载视频和字幕

1
youtube-dl --write-sub --all-subs https://www.yyy.com/video/BV1TW411g7Tf/

下载最高清的视频

1
youtube-dl -f bestvideo+bestaudio https://www.yyy.com/video/BV1TW411g7Tf/

下载多个视频

1
2
3
4
5
# 首先将视频地址写入文件中,注意,如果是一个视频集合,这里只需要输入第一个视频的链接,就可以下载整部视频
cat https://www.yyy.com/video/BV1TW411g7Tf/ >> video.txt

# 然后,从文件中获取链接下载视频
youtube-dl -a video.txt

下载多个最高清带有字幕的视频

1
youtube-dl -f bestvideo+bestaudio --write-sub --all-subs -a video.txt

提升下载速度

通过使用如下包可显著提高下载速度。

1
pip install yt-dlp

yt-dlp 的基本用法同 youtube-dl,更多内容请查看:https://pypi.org/project/yt-dlp/

1
2
# 下载 youtube 上受版权保护的视频,使用 --allow-u 参数
yt-dlp --allow-u https://www.youtube.com/watch?v=znKlC5bdh6U

使用浏览器 cookies

最新的 youtube 下载进行了更严格的控制。可以使用 cookies + js 的方式。

  1. 安装浏览器插件:Get cookies.txt LOCALLY
  2. 安装 Deno
    1
    2
    sudo apt update && sudo apt install -y unzip wget
    wget -qO- https://deno.land/install.sh | sh
  3. 升级 yt-dlp
    1
    pip install -U --force-reinstall "yt-dlp[default]"
  4. 安装 ffmpeg
    1
    sudo apt update && sudo apt install ffmpeg -y
  5. 使用 chrome 打开 youtube 视频,并从插件 Get cookies.txt LOCALLY 到处 cookies.txt,下载视频
    1
    2
    # use cookies
    yt-dlp -f bestvideo+bestaudio --cookies yt_cookies.txt --remote-components ejs:github https://www.youtube.com/watch\?v\=vmjbsobC3NI

最新版的 Chrome 锁定了 Cookie 数据库文件,虽然使用上面的插件导出 Cookies 可以临时解决问题,但是比较麻烦。

可以尝试使用旧版本的 Chrome(如 128系列)或使用 Firefox。但使用下面命令前,需要先在浏览器登录 google 账号,保证能够正确播放 youtube 视频。运行下面命令不需要打开Chrome或Firefox。

1
2
3
4
5
6
# or direct use Chrome browser cookies not use cookies.txt
# 要求使用旧版本的 Chrome,如 128.0.6613.120
yt-dlp -f bestvideo+bestaudio --cookies-from-browser chrome https://www.youtube.com/watch\?v\=vmjbsobC3NI

# 或者使用 firefox
yt-dlp -f bestvideo+bestaudio --cookies-from-browser firefox https://www.youtube.com/watch\?v\=vmjbsobC3NI