📦 VideoDL (videofetch) 详细部署教程

VideoDL 是一个轻量级的 Python 视频下载器,支持抖音、快手、B站、YouTube 等海量流媒体平台的高清无水印视频下载。它通过模块化的视频客户端解析视频源,并提供命令行和 Python 接口,方便集成。本文将指导您完成从安装到使用的全过程。


⚙️ 部署前准备

1. 核心环境要求

  • Python 版本:Python 3.6 或更高版本。
  • 包管理工具pip

2. 必须安装的依赖工具

VideoDL 的核心功能依赖于一些外部命令行工具,尤其推荐安装 FFmpeg 和 N_m3u8DL-RE,以确保最佳的解析和下载体验。

工具 用途 重要性 验证命令
FFmpeg 处理 HLS (m3u8) 流媒体、视频合并与转码。几乎所有流媒体下载都需要它。 必须 ffmpeg -version
N_m3u8DL-RE 专业的 m3u8 下载器,支持加密、防盗链、非标准流,下载速度更快。 强烈推荐 N_m3u8DL-RE --version
aria2c 多线程下载工具,可加速 MP4 等文件下载并支持断点续传。 可选 aria2c --version
Bento4 工具集,其中 mp4decrypt 用于处理某些加密的媒体流。 可选(特定平台) mp4decrypt --version
Node.js 用于执行 YouTube、CCTV 等特定平台解析所需的 JavaScript。 可选(特定平台) node -v

安装提示:请将上述工具的可执行文件路径添加到系统环境变量 PATH 中,以便 VideoDL 可以直接调用。


🚀 安装 VideoDL

VideoDL 的 Python 包名为 videofetch,提供三种安装方式,推荐通过 pip 安装。

方式一:通过 pip 安装(推荐)

1
pip install videofetch --upgrade

安装后,即可在终端中使用 videodl 命令。

方式二:从 GitHub 仓库直接安装

1
pip install git+https://github.com/CharlesPikachu/videodl.git@master

方式三:克隆源码后安装(适合开发或定制)

1
2
3
git clone https://github.com/CharlesPikachu/videodl.git
cd videodl
python setup.py install

⚡ 快速使用指南

VideoDL 提供了灵活的使用方式,包括命令行一键下载和交互式模式。

命令行使用

1. 下载单个视频(最常用)

1
videodl -i "视频URL"

例如:

1
videodl -i "https://www.acfun.cn/v/ac36491489"

2. 指定解析客户端(提高效率)
如果你知道视频来源,可以直接指定客户端,避免全局搜索:

1
videodl -i "URL" -a "AcFunVideoClient"

或同时指定多个:

1
videodl -i "URL" -a "AcFunVideoClient,BilibiliVideoClient"

3. 强制使用通用解析器
当平台专用解析器失效时,可以尝试通用解析器:

1
videodl -i "URL" -g

4. 设置自定义配置
通过 JSON 字符串传递配置,例如更改下载目录:

1
videodl -i "URL" -a "AcFunVideoClient" -c '{"AcFunVideoClient": {"work_dir": "downloads"}}'

5. 启动交互模式
如果不提供 -i 参数,会进入交互式终端,按提示输入 URL:

1
videodl

在交互模式中,可以输入 q 退出,输入 r 重启界面。


在 Python 脚本中使用

VideoDL 也可以作为 Python 库集成到你的项目中。

1. 解析并下载

1
2
3
4
5
6
7
8
9
10
from videodl import videodl

# 创建客户端
video_client = videodl.VideoClient()

# 解析视频信息
video_infos = video_client.parsefromurl("https://www.acfun.cn/v/ac36491489")

# 下载
video_client.download(video_infos)

2. 指定解析客户端

1
2
3
video_client = videodl.VideoClient(
allowed_video_sources=["AcFunVideoClient"] # 只使用特定解析器
)

3. 启用下载加速器

1
2
3
4
5
6
7
# 对解析结果启用 aria2c
for info in video_infos:
info["download_with_aria2c"] = True

# 启用 N_m3u8DL-RE 处理 m3u8
for info in video_infos:
info["enable_nm3u8dlre"] = True

📊 解析客户端说明

VideoDL 支持两种类型的解析客户端:

  1. 平台专用客户端:针对特定网站(如 B站、抖音)定制的解析逻辑,通常能提供最佳质量。
  2. 通用解析器:通过调用第三方聚合解析 API 工作,可在专用客户端失效时作为备选。

解析时,VideoDL 会优先尝试平台专用客户端,如果失败则自动按顺序尝试通用解析器


❓ 常见问题 (FAQ)

  • Q: 为什么下载失败,提示找不到 ffmpegN_m3u8DL-RE
    • A: 这是最常见的问题。VideoDL 依赖这些外部工具来处理流媒体。请确保它们已正确安装,并且其所在目录已添加到系统 PATH 环境变量中。安装后需要重启终端
  • Q: 如何更新 VideoDL 到最新版本?
    • A: 执行 pip install videofetch --upgrade 即可。
  • Q: 下载的视频带有广告或水印?
    • A: 如果使用通用解析器,广告可能由第三方解析服务插入,非 VideoDL 自身行为。可以尝试更换其他解析客户端(如使用 -a IM1907VideoClient 等)或使用 FFmpeg 手动裁剪广告片段。
  • Q: 某平台的视频突然无法下载了?
    • A: 网站接口会经常变动。请先尝试更新 VideoDL 到最新版本。如果问题依旧,欢迎在项目的 GitHub Issues 中反馈。
  • Q: videodl 命令找不到?
    • A: 这通常意味着 Python 的脚本目录(如 ~/.local/bin 或 Python 安装目录下的 Scripts)不在系统 PATH 中。请检查并添加该路径。

更详细的命令参数、API 文档和高级用法,请查阅 VideoDL 官方文档