YT-DLP的配置使用及相关指令

yt-dlp

YT-DLP 简介

yt-dlp 是一个基于 youtube-dl 的开源命令行程序,用于从 YouTube 和其他视频网站下载视频、音频和字幕。它支持大量的网站,并提供了丰富的功能,例如选择特定格式、质量、字幕,以及自定义输出。yt-dlp 旨在提供比原版 youtube-dl 更快、更稳定的下载体验,并增加了许多新的功能和修复。它非常适合那些希望将在线视频保存到本地以供离线观看或学习的用户。

环境配置

Tip

建议使用虚拟环境来隔离项目依赖,避免与其他Python项目冲突。

  • 操作系统:Ubuntu
  • Python: 建议使用 Python 3.7 或更高版本
  • yt-dlp:YouTube-DL的一个分支,具有更多功能和更好的性能

虚拟环境 (可选)

# 创建虚拟环境
python3 -m venv .venv

# 激活虚拟环境
source .venv/bin/activate

安装步骤

1. 安装依赖

安装 ffmpeg 工具,用于视频和音频的合并和转换。

# 更新包列表
sudo apt update

# 安装必要的依赖
sudo apt install python3 python3-pip ffmpeg -y

2. 安装yt-dlp

推荐使用 pip 安装,方便管理和更新。

# 使用pip安装
sudo pip3 install yt-dlp

备选安装方式

如果 pip 安装失败,可以尝试以下方法:

# 从GitHub仓库下载最新版本
sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
sudo chmod a+x /usr/local/bin/yt-dlp

3. 验证安装

# 检查版本
yt-dlp --version

Docker 配置

1. 创建 Dockerfile

在项目根目录下创建一个 Dockerfile 文件,用于定义 Docker 镜像的构建规则。

# Dockerfile
FROM python:3.9-slim-buster

# 设置工作目录
WORKDIR /app

# 安装 yt-dlp 依赖
RUN apt-get update && apt-get install -y ffmpeg

# 安装 yt-dlp
RUN pip3 install yt-dlp

# 设置入口点
ENTRYPOINT ["yt-dlp"]

2. 创建 docker-compose.yml

创建一个 docker-compose.yml 文件,用于定义 Docker 容器的配置。

# docker-compose.yml
version: "3.8"
services:
  yt-dlp:
    build: .
    volumes:
      - ./downloads:/app/downloads
    command: -o /app/downloads/%(title)s.%(ext)s VIDEO_URL

3. 构建和运行 Docker 容器

# 构建 Docker 镜像
docker-compose build

# 运行 Docker 容器
docker-compose run yt-dlp
Note

  • 替换 VIDEO_URL 为你要下载的视频链接。
  • 下载的视频将保存在 ./downloads 目录下。

4. Dockerfile 解释

  • FROM python:3.9-slim-buster: 使用 Python 3.9 作为基础镜像。
  • WORKDIR /app: 设置工作目录为 /app
  • RUN apt-get update && apt-get install -y ffmpeg: 安装 ffmpeg
  • RUN pip3 install yt-dlp: 安装 yt-dlp
  • ENTRYPOINT ["yt-dlp"]: 设置容器启动时执行的命令为 yt-dlp

5. docker-compose.yml 解释

  • version: "3.8": 指定 Docker Compose 文件版本。
  • services: 定义服务。
  • yt-dlp: 服务名称。
  • build: .: 使用当前目录下的 Dockerfile 构建镜像。
  • volumes: 将主机上的 ./downloads 目录挂载到容器的 /app/downloads 目录,实现文件共享。
  • command: 指定容器启动时执行的命令,-o /app/downloads/%(title)s.%(ext)s VIDEO_URL 将下载的视频保存到 /app/downloads 目录,并使用标题作为文件名。

基本使用方法

1. 下载视频

# 下载单个视频
yt-dlp "VIDEO_URL"

# 下载最佳质量
yt-dlp -f best "VIDEO_URL"

# 下载特定格式
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" "VIDEO_URL"

# 指定输出文件名
yt-dlp -o "output.mp4" "VIDEO_URL"

# 下载并合并字幕 (如果可用)
yt-dlp --write-subs --embed-subs "VIDEO_URL"

2. 下载音频

# 下载音频(最佳质量)
yt-dlp -x --audio-format mp3 "VIDEO_URL"

# 下载音频并指定质量 (0-9, 0为最佳)
yt-dlp -x --audio-format mp3 --audio-quality 0 "VIDEO_URL"

# 下载为 Opus 格式
yt-dlp -x --audio-format opus "VIDEO_URL"

3. 下载播放列表

# 下载整个播放列表
yt-dlp -i "VIDEO_PLAY_LIST_URL"

# 下载播放列表中的特定视频
yt-dlp --playlist-items 1,3,5 "VIDEO_PLAY_LIST_URL"

# 从特定索引开始下载播放列表
yt-dlp --playlist-start 10 "VIDEO_PLAY_LIST_URL"

# 下载播放列表中的一部分视频
yt-dlp --playlist-items 1-10 "VIDEO_PLAY_LIST_URL"

高级功能

1. 自定义输出格式

# 自定义文件名格式
yt-dlp -o "%(title)s-%(id)s.%(ext)s" "VIDEO_URL"

# 下载到指定目录
yt-dlp -o "/path/to/directory/%(title)s.%(ext)s" "VIDEO_URL"

# 使用更详细的格式
yt-dlp -o "%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" "VIDEO_URL"

2. 下载字幕

# 下载所有可用字幕
yt-dlp --write-sub "VIDEO_URL"

# 下载特定语言字幕
yt-dlp --write-sub --sub-lang zh-CN "VIDEO_URL"

# 同时下载多种语言字幕
yt-dlp --write-sub --sub-lang zh-CN,en "VIDEO_URL"

# 将字幕嵌入到视频中
yt-dlp --embed-subs "VIDEO_URL"

3. 限制下载速度

# 限制下载速度(如:50K/s)
yt-dlp --limit-rate 50K "VIDEO_URL"

# 限制下载速度(如:1M/s)
yt-dlp --limit-rate 1M "VIDEO_URL"

4. 使用 Cookies 和身份验证

# 使用 cookies 文件
yt-dlp --cookies "cookies.txt" "VIDEO_URL"

# 需要登录的网站
yt-dlp --username "USERNAME" --password "PASSWORD" "VIDEO_URL"

更新和维护

1. 更新yt-dlp

# 使用pip更新
sudo pip3 install -U yt-dlp

2. 配置文件

# 创建配置文件
mkdir -p ~/.config/yt-dlp
nano ~/.config/yt-dlp/config

# 配置文件示例内容
-f bestvideo+bestaudio
--merge-output-format mp4
-o ~/Downloads/%(title)s.%(ext)s
--write-subs
--embed-subs

配置文件详解

  • -f bestvideo+bestaudio: 选择最佳视频和音频质量
  • --merge-output-format mp4: 合并视频和音频为 MP4 格式
  • -o ~/Downloads/%(title)s.%(ext)s: 指定下载目录和文件名格式
  • --write-subs: 下载字幕
  • --embed-subs: 将字幕嵌入到视频中

常见问题

下载速度慢

  • 尝试使用代理
  • 更换下载服务器
  • 检查网络连接
  • 尝试使用 --limit-rate 限制下载速度,避免占用过多带宽

出现错误

  • 确保yt-dlp为最新版本
  • 检查网络连接
  • 验证URL是否有效
  • 查看错误信息,搜索相关解决方案

视频无法播放或缺少 codec

  • 确保安装了 ffmpeg
  • 尝试转换视频格式

身份验证问题

  • 确保用户名和密码正确
  • 检查 cookies 是否过期
  • 尝试更新 yt-dlp

最佳实践

  • 尊重版权,仅下载允许下载的内容
  • 避免过度下载,以免对服务器造成不必要的压力
  • 定期更新 yt-dlp,以获取最新的功能和修复
  • 仔细阅读 yt-dlp 的文档,了解更多高级用法

实用示例

下载 YouTube 视频并嵌入字幕

yt-dlp --write-subs --embed-subs "https://www.youtube.com/watch?v=xxxxxxxxxxx"

下载 Bilibili 视频

yt-dlp "https://www.bilibili.com/video/BVxxxxxxxxxx"

下载 Vimeo 视频

yt-dlp "https://vimeo.com/xxxxxxxx"

参考链接