260 lines
6.8 KiB
Markdown
260 lines
6.8 KiB
Markdown
# DouyinLiveRecorder 转播版
|
||
|
||
[](https://www.python.org/downloads/)
|
||
[](https://github.com/ihmily/DouyinLiveRecorder)
|
||
[](LICENSE)
|
||
|
||
基于 [DouyinLiveRecorder](https://github.com/ihmily/DouyinLiveRecorder) 的**转播增强版**,将原本的录制下载功能扩展为**实时推流转播**,支持抖音/TikTok 等直播推送到 YouTube、HDMI 等目标。
|
||
|
||
## 与原版的主要区别
|
||
|
||
| 功能 | 原版 DouyinLiveRecorder | 本转播版 |
|
||
|------|-------------------------|----------|
|
||
| 核心用途 | 录制直播到本地文件 | 实时转播到 YouTube / HDMI |
|
||
| 抖音 → YouTube | 不支持 | ✅ 支持,含 AI 人声分离防版权 |
|
||
| 抖音 → HDMI/SRS | 不支持 | ✅ 支持(TikTok 模式) |
|
||
| 录制到本地 | ✅ 支持 | ✅ 保留支持 |
|
||
| 平台支持 | 40+ 平台 | 继承全部平台 |
|
||
|
||
---
|
||
|
||
## 功能特性
|
||
|
||
### 转播模式
|
||
|
||
- **YouTube 转播**:抖音直播 → YouTube Live,支持 AI 人声分离(Demucs)降低音乐版权识别
|
||
- **TikTok/HDMI 转播**:抖音直播 → SRS 推流 → HDMI 采集卡或 OBS
|
||
- **本地录制**:保留原版全部录制能力
|
||
|
||
### 防版权识别(YouTube 专用)
|
||
|
||
- **Demucs AI 人声分离**:只保留人声,去除背景音乐,从源头避免 Content ID 匹配
|
||
- **NVIDIA GPU 加速**:自动检测 CUDA,优先使用 GPU 加速 Demucs
|
||
- **无 GPU 回退**:无显卡时自动回退到 CPU,不报错
|
||
- **可配置开关**:可在 `config/youtube.ini` 中关闭 Demucs,使用原始音频
|
||
|
||
### 循环值守与多直播间
|
||
|
||
- 自动轮询直播间状态
|
||
- 主播下播后自动停止推流,并快速重检
|
||
- 支持多直播间 URL 配置,单路推流时自动切换
|
||
- 直播状态推送(钉钉、微信、Telegram 等)
|
||
|
||
---
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
.
|
||
├── main.py # 主入口(本地录制 + SRS 转播)
|
||
├── youtube.py # YouTube 转播入口
|
||
├── tiktok.py # TikTok/HDMI 转播入口
|
||
├── douyin_youtube_ffplay.py # 抖音 → YouTube 推流(含 Demucs 管道)
|
||
├── douyin_srs_ffplay.py # 抖音 → SRS/HDMI 推流
|
||
├── web.py # Web 配置界面
|
||
├── config/
|
||
│ ├── config.ini # 通用配置
|
||
│ ├── youtube.ini # YouTube 推流配置(stream key、Demucs 开关)
|
||
│ └── URL_config.ini # 直播间 URL 列表
|
||
├── src/ # 爬虫、流解析等核心逻辑
|
||
├── backup/ # 备份与辅助模块
|
||
├── requirements.txt
|
||
├── pyproject.toml
|
||
└── README.md
|
||
```
|
||
|
||
---
|
||
|
||
## 快速开始
|
||
|
||
### 1. 环境要求
|
||
|
||
- **Python** >= 3.10
|
||
- **FFmpeg**(需支持 libx264、h264_nvenc)
|
||
- **可选**:NVIDIA GPU + CUDA(用于 Demucs 加速)
|
||
|
||
### 2. 安装依赖
|
||
|
||
```bash
|
||
# 克隆或下载项目
|
||
cd douyinyoutube
|
||
|
||
# 创建虚拟环境(推荐)
|
||
python -m venv .venv
|
||
# Windows:
|
||
.venv\Scripts\activate
|
||
# Ubuntu/Linux:
|
||
source .venv/bin/activate
|
||
|
||
# 安装基础依赖
|
||
pip install -r requirements.txt
|
||
|
||
# 若使用 YouTube 转播 + Demucs 防版权,需额外安装:
|
||
pip install -r requirements-youtube.txt
|
||
# GPU 版本(NVIDIA)需先安装 CUDA 版 PyTorch:
|
||
# pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu118
|
||
```
|
||
|
||
### 3. 配置
|
||
|
||
#### YouTube 转播
|
||
|
||
1. 编辑 `config/youtube.ini`:
|
||
|
||
```ini
|
||
[youtube]
|
||
# YouTube 直播 stream key(从 YouTube 直播控制台获取)
|
||
key = xxxx-xxxx-xxxx-xxxx
|
||
|
||
# 是否启用 Demucs 人声分离(防版权识别)
|
||
# 是 = 启用,否 = 使用原始音频
|
||
enable_demucs = 是
|
||
|
||
# Demucs 是否优先使用 GPU(有 NVIDIA 显卡时)
|
||
# 是 = 优先 GPU,否 = 强制 CPU
|
||
demucs_use_gpu = 是
|
||
```
|
||
|
||
2. 编辑 `config/URL_config.ini`,添加抖音直播间地址:
|
||
|
||
```ini
|
||
https://live.douyin.com/745964462470
|
||
https://live.douyin.com/xxx,主播名
|
||
```
|
||
|
||
3. 在 `config/config.ini` 中将 `视频保存格式` 设为 `ts`(触发 YouTube 推流逻辑)
|
||
|
||
#### TikTok/HDMI 转播
|
||
|
||
- 使用 `tiktok.py` 入口,配置 SRS 推流地址
|
||
- 详见 `tiktok/` 目录说明
|
||
|
||
### 4. 运行
|
||
|
||
```bash
|
||
# YouTube 转播
|
||
python youtube.py
|
||
|
||
# 或使用 uv
|
||
uv run youtube.py
|
||
```
|
||
|
||
---
|
||
|
||
## 详细配置说明
|
||
|
||
### config/youtube.ini
|
||
|
||
| 配置项 | 说明 | 默认值 |
|
||
|--------|------|--------|
|
||
| key | YouTube 直播 stream key | 必填 |
|
||
| enable_demucs | 是否启用 Demucs 人声分离 | 是 |
|
||
| demucs_use_gpu | 是否优先使用 NVIDIA GPU | 是 |
|
||
|
||
### config/config.ini
|
||
|
||
- **视频保存格式**:设为 `ts` 时,youtube.py 会走 YouTube 推流逻辑,而非本地录制
|
||
- **循环时间**:轮询间隔(秒)
|
||
- **代理**:海外平台需配置代理
|
||
|
||
### URL_config.ini 格式
|
||
|
||
```
|
||
# 单行一个直播间
|
||
https://live.douyin.com/745964462470
|
||
|
||
# 可加画质和备注
|
||
超清,https://live.douyin.com/xxx
|
||
https://live.douyin.com/yyy,主播名
|
||
|
||
# 注释掉不监测
|
||
# https://live.douyin.com/zzz
|
||
```
|
||
|
||
---
|
||
|
||
## Demucs 防版权说明
|
||
|
||
### 原理
|
||
|
||
- 使用 [Demucs](https://github.com/facebookresearch/demucs) 对混音进行人声分离
|
||
- 只保留人声轨道推送到 YouTube,背景音乐被物理移除
|
||
- Content ID 无法匹配已移除的音乐
|
||
|
||
### 延迟与性能
|
||
|
||
- **延迟**:约 4–8 秒(与 chunk 大小相关)
|
||
- **GPU**:有 NVIDIA 显卡时自动使用 CUDA 加速
|
||
- **CPU**:无 GPU 时自动回退,不影响运行
|
||
|
||
### 回退机制
|
||
|
||
1. **Demucs 未安装**:自动使用原始 FFmpeg 推流
|
||
2. **GPU 不可用**:自动使用 CPU 运行 Demucs
|
||
3. **enable_demucs = 否**:直接使用原始音频
|
||
|
||
---
|
||
|
||
## 平台兼容性
|
||
|
||
| 平台 | 录制 | YouTube 转播 | Demucs |
|
||
|------|------|--------------|--------|
|
||
| Windows | ✅ | ✅ | ✅(CPU/GPU) |
|
||
| Ubuntu Server | ✅ | ✅ | ✅(优先) |
|
||
| 其他 Linux | ✅ | ✅ | ✅ |
|
||
|
||
---
|
||
|
||
## Web 配置界面
|
||
|
||
```bash
|
||
python web.py
|
||
```
|
||
|
||
- 浏览器访问配置页面
|
||
- 支持编辑 `youtube.ini`、`URL_config.ini`
|
||
- 选择 youtube / tiktok / obs 等模式
|
||
|
||
---
|
||
|
||
## 常见问题
|
||
|
||
### 1. Demucs 安装失败
|
||
|
||
```bash
|
||
# 仅 CPU
|
||
pip install demucs torch torchaudio
|
||
|
||
# 使用国内镜像
|
||
pip install demucs torch torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
|
||
```
|
||
|
||
### 2. 无 NVIDIA 显卡
|
||
|
||
- 程序会自动使用 CPU 运行 Demucs
|
||
- 可在 `youtube.ini` 中设置 `demucs_use_gpu = 否` 以跳过 GPU 检测
|
||
|
||
### 3. 推流中断
|
||
|
||
- 检查网络与代理
|
||
- 检查 YouTube stream key 是否有效
|
||
- 查看控制台日志定位错误
|
||
|
||
### 4. 抖音风控
|
||
|
||
- 适当增大循环时间
|
||
- 确保 Cookie 有效(录制抖音需配置)
|
||
|
||
---
|
||
|
||
## 致谢
|
||
|
||
- 原项目:[ihmily/DouyinLiveRecorder](https://github.com/ihmily/DouyinLiveRecorder)
|
||
- 人声分离:[facebookresearch/demucs](https://github.com/facebookresearch/demucs)
|
||
|
||
---
|
||
|
||
## 许可证
|
||
|
||
MIT License
|