---
slug: "videohub"
source_type: "readme"
source_url: "https://cdn.jsdelivr.net/gh/cacity/VideoHub@main/README.md"
repo: "https://github.com/cacity/VideoHub"
source_file: "README.md"
branch: "main"
---
# 视频转录工具 (Video Hub)

**当前版本: v0.2.4**

简体中文  | [English](https://github.com/cacity/VideoHub/blob/HEAD/README_en.md)

这是一个功能强大的桌面应用程序，使用 PyQt6 构建现代化图形界面，支持 **YouTube、Twitter/X、抖音/TikTok、Instagram、Bilibili** 等多平台视频内容的智能处理。提供媒体导入与处理、语音转录、双语字幕生成、**AI 配音**、内容摘要等完整工作流，并配备闲时调度、批量处理、Claude Code Skills 等高级功能。

## 🆕 最新更新：MiniMax 多音色配音

VideoHub 的 AI 配音现在新增 **MiniMax TTS API** 后端。除了原来的本地 Kokoro 和 CosyVoice，用户也可以在设置中切换到 MiniMax，并从多个系统音色中选择更合适的声音。

- **多音色选择**: 支持中文男声、中文女声、新闻播音、电台主持、青年声线、成熟声线和粤语男声等预置音色
- **可试听再生成**: AI 配音页可直接试听当前音色，确认效果后再开始正式配音
- **可自定义 Voice ID**: 除预置音色外，也可以手动填写 MiniMax 控制台中的自定义 `voice_id`
- **不影响默认流程**: 未切换时仍默认使用本地 Kokoro；CosyVoice 和 MiniMax 都是手动选择的可选后端
- **适合视频解说**: 男声播音、主持类音色更适合课程、技术分享、访谈、说明类视频的中文配音
- MiniMax配音的演示视频 youtube https://youtu.be/ns-X5yUb4gE

## ✨ 加入讨论群

![](https://raw.githubusercontent.com/cacityfauh-ui/MyPic/master/pic/20260713124857253.png)

## ✨ 核心功能

### 🎬 多平台视频处理

- **🎥 平台支持**: YouTube、Twitter/X、抖音、Bilibili 等主流视频平台
- **智能处理**: 支持视频/音频导入与本地处理，可选择完整视频或仅音频模式
- **精准转录**: 基于 OpenAI Whisper 的高质量语音转录技术
- **多格式字幕**: 生成 .srt、.vtt、.ass 等多种格式的双语字幕文件
- **字幕嵌入**: 支持将字幕直接嵌入到视频文件中
- **AI 配音**: 默认使用 Kokoro TTS，也可手动切换到 CosyVoice SFT / Instruct 或 MiniMax API，生成更自然的中文配音版本视频
- **内容摘要**: 利用 LLM（支持 OpenAI、DeepSeek 等）智能生成文章摘要

### 🌐 Chrome浏览器扩展

- **页面集成**: 在 YouTube、Twitter/X、Bilibili 视频页面自动添加处理按钮
- **一键加入队列**: 点击按钮即可将任务添加到闲时处理队列
- **队列管理**: 通过扩展弹窗查看、导出、清空处理队列
- **实时同步**: 通过 HTTP API 与桌面应用实时通信
- **智能识别**: 自动提取视频标题、作者、链接等信息
- **视觉反馈**: 添加成功后按钮状态变化，避免重复添加

正确安装插件后，在X/YouTube等视频网站，视频下方会出现处理按钮，后台运行主程序后，点击按钮即可把当前任务加入处理队列。

### 📱 手机本地网页下载

- **局域网访问**: 在电脑上启动轻量网页端后，iPhone/手机可通过同一 Wi-Fi 下的局域网地址访问
- **手机粘贴链接**: 手机浏览器中长按输入框粘贴视频链接，点击按钮即可触发本地下载
- **下载到手机相册**: 下载完成后页面会提供视频预览、打开视频和下载入口，iPhone 可通过 Safari 分享菜单保存到相册
- **本地保存**: 下载文件统一保存在电脑的 `workspace/mobile/` 目录，便于后续管理和清理

![](https://raw.githubusercontent.com/cacityfauh-ui/MyPic/master/pic/20260616092447802.png)

启动方式：

```bash
python src/mobile_web_server.py
```

启动后终端会显示类似 `http://局域网IP:8787` 的手机访问地址。手机和电脑需要连接到同一个局域网；如果无法访问，请检查 Windows 防火墙是否允许 `8787` 端口。

## 免责声明

本项目仅供合法、合规且经授权的用途使用。使用涉及第三方平台内容、Cookie、Token、录制、导入或处理功能前，请先阅读 [DISCLAIMER.md](https://github.com/cacity/VideoHub/blob/HEAD/DISCLAIMER.md)。

## 使用方法

### 1.处理 YouTube 视频列表

比如斯坦福CS231N这个视频列表：

```
https://www.youtube.com/playlist?list=PLoROMvodv4rOmsNzYBMe0gJY2XS8AQg16
```

![](https://raw.githubusercontent.com/cacityfauh-ui/MyPic/master/pic/20251215161701139.png)

复制好视频列表连接，在软件`视频URL`中右键，会直接粘贴视频的连接。

![](https://raw.githubusercontent.com/cacityfauh-ui/MyPic/master/pic/20251215161801204.png)

勾选下面的选项，可以保存视频、获取原生英文字幕；如果没有原生字幕，也可以用 whisper 做语音转字幕，勾选生成字幕并翻译，这样就有了视频和双语字幕，方便学习研究。翻译字幕使用的是谷歌翻译，翻译时间会比较久；如果列表中文件较多，可以先完成媒体处理，再选中视频目录单独进行字幕提取和翻译。下图就是显示出来的双语字幕。

![](https://raw.githubusercontent.com/cacityfauh-ui/MyPic/master/pic/20251215162320373.png)

### 2.批量翻译字幕

在软件中选中本地视频，勾选批量处理，选中要处理的目录，把要处理的项勾选上，让它自己处理就可以了，这个列表共有18个视频，翻译花了好长时间。仅供参考。

![](https://raw.githubusercontent.com/cacityfauh-ui/MyPic/master/pic/20251215162505994.png)

### 3.抖音内容处理

在抖音PC版上点分享，复制连接，直接在`视频URL`中右键直接粘贴连接，勾选你要处理的项，可以进行媒体处理和摘要提取等。

![](https://raw.githubusercontent.com/cacityfauh-ui/MyPic/master/pic/20251215162943458.png)

![](https://raw.githubusercontent.com/cacityfauh-ui/MyPic/master/pic/20251215171532304.png)

### 4.处理 X 视频链接

类似这种连接，页面有一个视频。

```
https://x.com/tanchibu37099/status/2000362448982102119
```

复制好连接，在`视频URL`中右键直接粘贴连接，即可加入处理流程。

### 5.插件使用

把项目中的`chrome_extension`整个文件夹拖到Edge或者Chrome浏览器中的扩展中，就完成了插件安装。安装成功后，扩展栏会有一个图标。在支持的视频正下方会有处理按钮，点击后会把当前任务加入到处理队列中。

![](https://raw.githubusercontent.com/cacityfauh-ui/MyPic/master/pic/20251215172127386.png)



### 🔄 批量处理

- **多平台批处理**: 支持混合处理不同平台的视频链接
- **文件导入**: 可从文本文件批量导入 URL 列表
- **进度跟踪**: 实时显示批量任务的处理进度和结果

### ⏰ 闲时调度系统

- **智能调度**: 设置闲时时间段（如晚上23:00-早晨07:00），自动执行处理任务
- **任务队列**: 白天将任务添加到队列，闲时自动依次执行
- **灵活控制**: 支持暂停/恢复、立即执行、任务重排等操作
- **可视化管理**: 专门的"闲时队列"标签页，实时查看和管理任务状态

### 🎙️ AI 配音

- **样片演示**: [CosyVoice 中文配音合成样片](https://www.youtube.com/watch?v=zigNxozcGEQ)

[![VideoHub 样片演示](https://img.youtube.com/vi/zigNxozcGEQ/hqdefault.jpg)](https://www.youtube.com/watch?v=zigNxozcGEQ)

- **默认后端**: 默认使用原来的 Kokoro TTS，支持晓贝、晓晓、晓艺、云健、云扬等中文音色
- **CosyVoice 后端**: 可在设置中手动切换到 CosyVoice SFT 或 CosyVoice Instruct，支持中文女、中文男、粤语女、英文女等音色
- **MiniMax 后端**: 可在设置中手动切换到 MiniMax API，支持中文男声、中文女声、新闻播音、电台主持、青年声线、成熟声线和粤语男声等系统音色
- **音色试听**: 配音页可直接试听当前音色，试听文件会缓存到 `workspace/dubbing_temp/voice_previews/`，再次试听同一配置时直接播放旧文件
- **智能转录**: 自动将视频语音转录为字幕
- **流畅合成**: 保持原始视频节奏，自动填充静音
- **灵活输出**: 可选择保留原声背景音，调节背景音音量

**输出目录**: 配音文件保存在 `workspace/dubbing_temp/` 目录，完成后生成 `{原文件名}_中文配音.mp4`

#### 使用 CosyVoice 配音

CosyVoice 作为可选本地 TTS 后端，需要先启动独立服务：

```bash
python tts_service.py --host 127.0.0.1 --port 8877
```

服务启动后，在 VideoHub 中进入 `设置 -> TTS 配音设置`：

1. `TTS 引擎版本` 选择 `CosyVoice SFT` 或 `CosyVoice Instruct`
2. 确认 `CosyVoice 服务地址` 为 `http://127.0.0.1:8877`
3. 选择 CosyVoice 音色，例如 `中文女` 或 `中文男`
4. 如果使用 `CosyVoice Instruct`，填写朗读指令，例如“用自然、清晰、适合视频讲解的语气朗读”
5. 保存设置后，到 `AI配音` 页面点击音色旁边的 `试听`
6. 确认音色效果后，选择 YouTube 链接、本地视频或已有字幕，点击 `开始配音`

切换到 CosyVoice 后，AI 配音页的音色列表会自动从 Kokoro 的“晓贝/晓晓/云健”等切换为 CosyVoice 的“中文女/中文男/粤语女”等。未手动切换时，VideoHub 仍保持原来的 Kokoro 配音流程。

#### 使用 MiniMax API 配音

MiniMax 是外部付费 TTS API，适合想快速获得更多中文音色选择、又不想在本地加载大模型的场景。

在 VideoHub 中进入 `设置 -> TTS 配音设置`：

1. `TTS 类型和引擎` 选择 `外部付费 - MiniMax API`
2. 填写 `MiniMax API Key`
3. 选择模型，例如 `speech-2.8-turbo` 或 `speech-2.8-hd`
4. 在 `MiniMax 音色` 中选择男声、女声、播音、主持等预置音色
5. 如需使用自定义声音，可直接在音色框中填写自己的 `voice_id`
6. 保存设置后，到 `AI配音` 页面点击音色旁边的 `试听`
7. 确认音色效果后，选择 YouTube 链接、本地视频或已有字幕，点击 `开始配音`

切换到 MiniMax 后，AI 配音页的音色列表会自动显示 MiniMax 的系统音色。试听和正式配音都会使用当前选中的音色；如果没有配置 MiniMax API Key，不会影响 Kokoro 和 CosyVoice 的本地配音流程。

### 🤖 项目级 Skills

本项目在 `.agents/skills/` 下维护了一组项目级 skills，供 Codex、Claude Code 等智能编码助手读取。它们不是业务运行时依赖，也不会替代 GUI 或 CLI；它们的作用是让智能助手在处理 VideoHub 相关任务时，优先复用当前项目已有入口、脚本和约定，减少重复造轮子或误用过期路径。

| Skill | 适用场景 | 主要复用入口 |
| --- | --- | --- |
| `videohub` | 总入口与任务路由，判断应使用哪个子 skill | `main.py`、`src/youtube_transcriber.py` |
| `videohub-youtube` | YouTube、Twitter/X、Bilibili、本地音视频/文本的转写、字幕、翻译和总结 | `python src/youtube_transcriber.py --help` |
| `videohub-douyin` | 抖音单视频和用户主页作品下载 | `python src/douyin_cli.py <url>` |
| `videohub-queue` | 闲时队列、Chrome/Edge 扩展、本地 API 排查 | `src/api_server.py`、`http://127.0.0.1:8765` |
| `videohub-ffmpeg` | FFmpeg 状态检查、路径配置、模式切换、下载和测试 | `python src/ffmpeg_config_cli.py help` |
| `videohub-subtitles` | 字幕生成后的烧录、视频合成、独立字幕合成工具说明 | `embed_subtitles_to_video()`、`python src/subtitle_merger.py` |
| `videohub-live` | 直播录制依赖、配置和运行状态诊断 | `src/live_recorder_adapter.py` |

常见同步点：

- 字幕翻译默认使用 Google；如果 Google 失败，会尝试 DeepSeek/OpenAI 作为备用翻译。
- 字幕目标语言支持 `zh-CN`、`zh-TW`、`en`、`ja`、`ko`、`ru`、`fr`、`de`、`es`、`it`、`pt`、`ar`，默认 `zh-CN`。
- 字幕烧录主流程复用 `src/youtube_transcriber.py` 中的 `embed_subtitles_to_video()`；独立 GUI 工具为 `src/subtitle_merger.py`。
- 抖音用户主页下载已有入口，但通常需要有效 Cookie 和相关依赖，实际可用性以运行结果为准。



## 🖼️ 应用界面

### 主界面标签页

- **在线视频**: 单个视频处理，支持 YouTube、Twitter、X、抖音等多平台
- **本地音频/视频**: 处理本地媒体文件
- **批量处理**: 批量处理多个不同平台的视频链接
- **闲时队列**: 可视化任务队列管理和闲时调度控制
- **直播录制**: 多平台直播监控与录制相关功能
- **处理历史**: 查看所有处理过的任务记录
- **设置**: API 配置、模板管理、闲时设置

![image-20250922152348383](https://raw.githubusercontent.com/cacityfauh-ui/MyPic/master/pic/20250923101839756.png)



## 🛠️ 安装配置

### 系统要求

- Python 3.8+
- Windows/macOS/Linux
- 8GB+ RAM（推荐用于 Whisper 模型）
- FFmpeg（直播录制必需）
- Chrome浏览器（使用浏览器扩展时）

### 1. 环境准备

```bash
# 克隆仓库
git clone git@github.com:cacity/VideoHub.git
cd VideoHub

# 创建虚拟环境（推荐）
conda create -n VideoHub python=3.12
conda activate VideoHub

# 安装依赖
pip install -r requirements.txt
```

### 核心依赖

```txt
PyQt6                    # 现代化GUI框架
yt-dlp                   # 多平台媒体获取与处理支持
openai-whisper           # 语音转录
openai                   # OpenAI API
requests                 # HTTP请求
python-dotenv            # 环境变量管理
flask                    # API服务器
flask-cors               # 跨域支持
asyncio                  # 异步IO（直播录制）
```

### 2. 配置设置

#### API 密钥配置

在应用的"设置"标签页中配置以下 API 密钥：

```env
# OpenAI API (用于GPT模型)
OPENAI_API_KEY=sk-your-openai-api-key

# DeepSeek API (国内替代方案)
DEEPSEEK_API_KEY=your-deepseek-api-key

# 代理设置（如需要）
PROXY=http://proxy.example.com:8080
```

#### 闲时设置

- 默认闲时：23:00 - 07:00
- 可在"设置"或"闲时队列"页面自定义时间段

### 3. 安装 FFmpeg（直播录制必需）

FFmpeg 是直播录制功能的必需组件。应用会自动检测并尝试安装：

```bash
# 运行自动安装脚本
python ffmpeg_install.py
```

手动安装方式：

- **Windows**: 下载 FFmpeg 并添加到系统 PATH
- **macOS**: `brew install ffmpeg`
- **Linux**: `sudo apt-get install ffmpeg` 或 `sudo yum install ffmpeg`

### 4. 安装 Chrome 浏览器扩展（可选）

如果需要使用浏览器扩展功能：

1. 打开 Chrome 浏览器，访问 `chrome://extensions/`
2. 开启右上角的"开发者模式"
3. 点击"加载已解压的扩展程序"
4. 选择项目中的 `chrome_extension` 文件夹
5. 扩展将出现在扩展程序列表中

### 5. 运行应用

```bash
# 启动桌面应用（包含 HTTP API 服务器）
python main.py

# 启动手机本地网页下载服务（局域网访问，默认端口 8787）
python src/mobile_web_server.py

# 启动 CosyVoice TTS 服务（使用 CosyVoice 配音前启动）
python tts_service.py --host 127.0.0.1 --port 8877

# 或使用抖音处理命令行工具
python douyin_cli.py <抖音视频URL>
```

## 📂 项目结构

```
VideoHub/
├── 📁 核心文件
│   ├── main.py                        # PyQt6 GUI 主程序（整合所有功能）
│   ├── api_server.py                  # HTTP API 服务器（供Chrome扩展调用）
│   ├── tts_service.py                 # CosyVoice 本地 TTS 服务
│   ├── douyin_cli.py                  # 抖音命令行处理工具
│   ├── live_recorder_adapter.py       # 直播录制适配器
│   ├── mobile_web_server.py           # 手机局域网网页下载服务
│   ├── ffmpeg_install.py              # FFmpeg 自动安装脚本
│   ├── msg_push.py                    # 消息推送模块
│   └── requirements.txt               # Python 依赖
├── 📁 Chrome扩展
│   ├── chrome_extension/
│   │   ├── manifest.json              # 扩展配置文件
│   │   ├── background.js              # 后台服务脚本
│   │   ├── content-scripts/           # 页面内容脚本
│   │   │   ├── youtube.js
│   │   │   ├── twitter.js
│   │   │   ├── bilibili.js
│   │   │   └── styles.css
│   │   ├── popup/                     # 扩展弹窗界面
│   │   │   ├── popup.html
│   │   │   ├── popup.js
│   │   │   └── popup.css
│   │   └── icons/                     # 扩展图标
├── 📁 抖音下载模块
│   ├── douyin/                        # 抖音视频解析和下载
│   │   ├── parser.py                  # URL解析
│   │   ├── downloader.py              # 视频下载
│   │   ├── video_extractor.py         # 视频提取器
│   │   └── ...
│   └── douyinVd/                      # Deno实现的备用下载方案
├── 📁 直播录制模块
│   ├── live_recorder/
│   │   ├── spider.py                  # 直播平台爬虫
│   │   ├── stream.py                  # 直播流处理
│   │   ├── room.py                    # 直播间管理
│   │   └── ...
│   └── live_config/
│       ├── config.ini                 # 直播录制配置
│       └── URL_config.ini             # 直播间URL列表
├── 📁 输出目录
│   ├── downloads/                     # 多平台音频文件 (.mp3)
│   ├── videos/                        # 多平台视频文件 (.mp4/.webm/.mov等)
│   ├── douyin_downloads/              # 抖音视频输出目录
│   ├── live_downloads/                # 直播录制文件 (.ts/.flv/.mp4)
│   ├── mobile/                        # 手机网页端下载文件
│   ├── transcripts/                   # 转录文本 (.txt)
│   ├── subtitles/                     # 字幕文件 (.srt/.vtt/.ass)
│   ├── summaries/                     # 文章摘要 (.md)
│   └── dubbing_temp/                  # AI 配音临时文件
├── 📁 配置目录
│   ├── templates/                     # 自定义文章模板
│   ├── icons/                         # 应用图标资源
│   └── logs/                          # 下载历史记录
└── 📁 配置文件
    ├── .env                           # 环境变量（API密钥等）
    └── idle_queue.json                # 闲时队列数据
```

## 🌐 支持的平台

### 主要支持平台

- **🎬 YouTube**: 完整支持，包括私有视频（需Cookie）
- **🐦 Twitter/X**: 支持视频推文，可能需要登录状态
- **📱 抖音**: 支持抖音链接识别与媒体处理
- **📺 Bilibili**: 支持 B 站视频处理
- **🌍 其他平台**: 基于 yt-dlp 支持的 1000+ 网站

### 平台特性对比

| 平台      | 媒体处理   | 音频提取 | 字幕支持   | Cookie需求   | 特色功能     |
| --------- | ---------- | -------- | ---------- | ------------ | ------------ |
| YouTube   | ✅ 完整支持 | ✅ 高质量 | ✅ 多语言   | 部分视频需要 | 原生字幕提取 |
| Twitter/X | ✅ 支持     | ✅ 支持   | ✅ 转录生成 | 推荐使用     | 短视频优化   |
| 抖音      | ✅ 支持     | ✅ 高质量 | ✅ 转录生成 | 视场景而定   | 智能分享识别 |
| Bilibili  | ✅ 支持     | ✅ 支持   | ✅ 转录生成 | 部分内容需要 | 弹幕处理     |



## 🤝 贡献

欢迎对本项目进行贡献！

### 贡献方式

- 🐛 报告 Bug: [创建 Issue](https://github.com/cacity/VideoHub/issues)
- 💡 功能建议: 提交 Feature Request
- 🔀 代码贡献: 提交 Pull Request
- 📖 文档改进: 完善使用说明



## 📄 许可证

本项目采用 [MIT 许可证](https://github.com/cacity/VideoHub/tree/HEAD/LICENSE)，允许自由使用、修改和分发。使用涉及第三方平台内容、Cookie、Token、录制或批量处理等功能前，请先阅读 [DISCLAIMER.md](https://github.com/cacity/VideoHub/blob/HEAD/DISCLAIMER.md)。

---

## 🌟 致谢

感谢以下开源项目的支持：

- [PyQt6](https://www.riverbankcomputing.com/software/pyqt/) - 现代化GUI框架
- [yt-dlp](https://github.com/yt-dlp/yt-dlp) - 多平台视频下载工具（支持1000+网站）
- [OpenAI Whisper](https://github.com/openai/whisper) - 语音识别模型
- [OpenAI API](https://openai.com/) - 大语言模型服务

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=cacity/VideoHub&type=Date)](https://www.star-history.com/#cacity/VideoHub&Date)

**⭐ 如果这个项目对您有帮助，请给个 Star 支持一下！**
