0cd /root/video-subtitle-extractor && bash smart_run.sh test/test_cn.mp4
🎯 一句话介绍:这是一个能把视频里"烧"进去的字幕提取出来,变成可编辑的文本文件的工具。
想象一下,你下载了一个视频,字幕是直接"印"在画面上的,就像照片上的水印一样,无法关闭或编辑。这种字幕就叫硬字幕(也叫内嵌字幕)。
┌─────────────────────────────────────┐
│ │
│ 视频画面 │
│ │
│ │
│ ┌───────────────────────────────┐ │
│ │ 这是硬字幕,无法关闭 │ │ ← 硬字幕(烧进画面)
│ └───────────────────────────────┘ │
└─────────────────────────────────────┘
本工具可以:
| 项目 | 要求 | 说明 |
|---|---|---|
| 操作系统 | Windows 10/11 或 Linux | Mac也可以但需要额外配置 |
| CPU | 4核以上 | 可以运行,但会比较慢 |
| 内存 | 8GB以上 | 最少8GB,推荐16GB |
| 硬盘空间 | 5GB以上 | 存放程序和模型文件 |
| 显卡 | 无要求 | CPU模式就能跑 |
| 项目 | 要求 | 说明 |
|---|---|---|
| 显卡 | NVIDIA显卡(GTX 1060及以上) | 必须是NVIDIA,AMD不支持 |
| 显存 | 4GB以上 | 6GB更好,8GB最佳 |
| CUDA | CUDA 11.7 或 11.8 | 需要单独安装 |
⚠️ 重要提示:
- 如果你有NVIDIA显卡,强烈建议使用GPU版本,速度差距巨大!
- AMD显卡或Intel核显无法使用GPU加速,只能用CPU模式
下载Miniconda
Miniconda3 Windows 64-bitMiniconda3-latest-Windows-x86_64.exe安装Miniconda
Add Miniconda3 to my PATH environment variable(重要!)验证安装
Win + R 键,输入 cmd,按回车python --version
Python 3.x.x,说明安装成功# 1. 下载Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 2. 安装
bash Miniconda3-latest-Linux-x86_64.sh
# 3. 重启终端或执行
source ~/.bashrc
# 4. 验证
python --version
Code 按钮Download ZIPC:\tools\video-subtitle-extractorC:\我的文档\字幕提取器 (有中文)C:\Program Files\video subtitle (有空格)git clone https://github.com/YaoFANGUK/video-subtitle-extractor.git
cd video-subtitle-extractor
打开命令行
Win + R,输入 cmd,回车进入项目目录
# Windows示例(替换成你的实际路径)
cd C:\tools\video-subtitle-extractor
# Linux示例
cd /home/username/video-subtitle-extractor
创建虚拟环境
conda create -n videoEnv python=3.8
Proceed ([y]/n)? 时,输入 y 并回车激活虚拟环境
conda activate videoEnv
(videoEnv)# 确保已激活环境(命令行前面有 (videoEnv))
pip install -r requirements.txt
前提条件:需要先安装CUDA和cuDNN
安装CUDA 11.7
安装cuDNN 8.4.1
安装GPU版本的依赖
# 先安装GPU版本的PaddlePaddle
python -m pip install paddlepaddle-gpu==2.4.2.post117 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
# 再安装其他依赖
pip install -r requirements_gpu.txt
💡 小贴士:如果觉得GPU版本安装太复杂,用CPU版本也完全可以,只是速度慢一些而已。
运行以下命令检查是否安装成功:
python gui.py
如果弹出图形界面,说明安装成功!🎉
# 1. 激活环境
conda activate videoEnv
# 2. 进入项目目录
cd /path/to/video-subtitle-extractor
# 3. 启动GUI
python gui.py
界面说明:
┌────────────────────────────────────────────────────────────┐
│ Video Subtitle Extractor │
├────────────────────────────────────────────────────────────┤
│ │
│ 视频路径:[___________________] [浏览...] ← 点这里选视频 │
│ │
│ 字幕语言:[中文 ▼] ← 选择字幕的语言 │
│ │
│ 提取模式: │
│ ○ 快速模式 (fast) - 速度最快,可能漏字幕 │
│ ● 自动模式 (auto) - 推荐,平衡速度和准确度 ← 推荐 │
│ ○ 精准模式 (accurate) - 最准确,速度最慢 │
│ │
│ 字幕区域: │
│ ○ 自动检测 ← 推荐新手 │
│ ○ 手动选择 │
│ │
│ [开始提取] [取消] │
│ │
└────────────────────────────────────────────────────────────┘
从下拉菜单选择:
outputs/ 目录下如果你有NVIDIA显卡,使用智能脚本可以获得最快速度!
# 1. 激活环境
conda activate videoEnv
# 2. 运行智能脚本
./smart_run.sh /path/to/your/video.mp4
抱歉,智能脚本目前只支持Linux。Windows用户请使用GUI或普通命令行。
╔═══════════════════════════════════════════════════════════════╗
║ ║
║ 智能视频字幕提取器 - Smart Subtitle Extractor ║
║ ║
║ • 自动检测字幕区域 ║
║ • GPU显存自适应优化 ║
║ • 极致速度提取(防OOM) ║
║ ║
╚═══════════════════════════════════════════════════════════════╝
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
第一阶段:环境准备与验证
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 视频路径: /root/video-subtitle-extractor/test/test_cn.mp4
[SUCCESS] 视频文件验证通过
[INFO] 正在分析视频...
[SUCCESS] 视频信息获取成功
• 分辨率: 1920x1080
• 帧数: 434
• 帧率: 25.00 fps
• 时长: 17.4 秒
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
第二阶段:GPU显存智能分析与参数优化
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] GPU型号: Tesla T4
[INFO] 总显存: 15109 MB
[INFO] 已用显存: 0 MB
[INFO] 可用显存: 15109 MB
[SUCCESS] 显存充足,开始计算最优参数...
╔════════════════════════════════════════════════════════╗
║ 智能优化参数(基于15109MB显存) ║
╠════════════════════════════════════════════════════════╣
║ REC_BATCH_NUM : 55 (原值: 40)
║ MAX_BATCH_SIZE : 68 (原值: 50)
║ GPU_MEM : 8476 MB (原值: 8000)
║ EXTRACT_FREQUENCY : 5 (原值: 5)
╠════════════════════════════════════════════════════════╣
║ 预估显存占用 : ~12400 MB
║ 安全边界 : 0.8x (预留20%)
║ 预期速度提升 : 1.4x (相比默认配置)
╚════════════════════════════════════════════════════════╝
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
第五阶段:极速字幕提取
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 开始提取字幕...
[INFO] 正在加载OCR模型和处理视频帧...
✓ 使用GPU模式
→ 提取帧数: 87
⟳ 识别中... 10%
⟳ 识别中... 25%
⟳ 识别中... 50%
⟳ 识别中... 75%
⟳ 识别中... 100%
✓ 识别完成
[SUCCESS] 字幕提取完成!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📁 字幕文件输出路径 (Output Files)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[SRT字幕文件]
/root/video-subtitle-extractor/outputs/test_cn_20251114_123045/subtitle/raw_vsf.srt
大小: 1234 bytes
[TXT纯文本文件]
/root/video-subtitle-extractor/outputs/test_cn_20251114_123045/subtitle/raw.txt
大小: 567 bytes
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
╔═══════════════════════════════════════════════════════════════╗
║ 🎉 提取成功完成! ║
╚═══════════════════════════════════════════════════════════════╝
如果智能脚本无法运行,使用这个方法:
# 1. 激活环境
conda activate videoEnv
# 2. 运行程序
python backend/main.py
然后按提示输入:
/path/to/video.mp4)842 1069 72 1368)💡 如何知道字幕区域?
- 使用GUI的"预览"功能,手动框选字幕区域
- 使用智能脚本,会自动检测
- 或者试试常用值:
0 视频高度 0 视频宽度(提取整个底部区域)
原因:Python或conda没有添加到系统PATH
解决方法:
我的电脑 → 属性 → 高级系统设置 → 环境变量解决方法:
python -m pip install --upgrade pip
解决方法:
# 安装Microsoft Visual C++ 编译工具(Windows)
# 下载地址:https://visualstudio.microsoft.com/visual-cpp-build-tools/
# 或者使用conda安装
conda install -c conda-forge shapely
可能原因:
解决方法:
解决方法:
# 编辑 backend/config.py
REC_BATCH_NUM = 10 # 改小这个值
可能原因:
解决方法:
这是正常的!OCR识别不可能100%准确。
解决方法:
// 编辑 backend/configs/typoMap.json
{
"l'm": "I'm",
"威筋": "威胁"
}
支持几乎所有常见格式:
在项目目录的 outputs/ 文件夹下:
outputs/
└── 视频名称_时间戳/
├── frames/ ← 提取的视频帧
└── subtitle/ ← 字幕文件
├── raw.txt ← 纯文本字幕
└── raw_vsf.srt ← 带时间轴的SRT字幕
SRT字幕可以:
TODO: 可以录制一个简短的操作视频放在这里
TODO: 详细讲解每个功能的使用
配置文件位置:backend/config.py
重要参数:
# 每秒提取帧数(值越大越精确,但速度越慢)
EXTRACT_FREQUENCY = 5 # 推荐: 3-5
# 每批次OCR识别文本框数量(取决于GPU显存)
REC_BATCH_NUM = 40 # GPU 4GB: 20, 8GB: 40, 12GB+: 60
# 置信度阈值(低于此值的识别结果会被丢弃)
DROP_SCORE = 0.75 # 推荐: 0.7-0.8
# 文本相似度阈值(去重时判断是否为同一字幕)
THRESHOLD_TEXT_SIMILARITY = 0.8 # 推荐: 0.75-0.85
编辑 backend/configs/typoMap.json:
{
"l'm": "I'm",
"威筋": "威胁",
"性感荷官在线发牌": ""
}
如果遇到Bug,请到GitHub提Issue: https://github.com/YaoFANGUK/video-subtitle-extractor/issues
提Issue时请包含:
EXTRACT_FREQUENCY = 3字幕通常在屏幕底部,可以尝试:
对于1920x1080的视频:
左: 0
上: 900(底部10%区域)
右: 1920
下: 1080
对于1280x720的视频:
左: 0
上: 600
右: 1280
下: 720
智能脚本会自动分析视频,找到字幕区域,无需手动选择。
# 1. 准备高清视频(1080p最佳)
# 2. 使用智能脚本
./smart_run.sh /path/to/friends_s01e01.mp4
# 3. 得到SRT字幕文件
# 4. 用记事本打开,复制单词到Anki
# 1. 使用下载工具下载B站视频(如you-get)
you-get https://www.bilibili.com/video/BV1xx411c7mD/
# 2. 提取字幕
./smart_run.sh downloaded_video.mp4
# 3. 整理成笔记
# 1. 先提取原语言字幕
./smart_run.sh movie_cn.mp4 # 中文字幕
# 2. 翻译SRT文件(用字幕编辑器)
# 3. 合并成双语字幕
# 激活环境
conda activate videoEnv
# 启动GUI
python gui.py
# 智能脚本(Linux)
./smart_run.sh /path/to/video.mp4
# 普通命令行
python backend/main.py
# 退出环境
conda deactivate
# 查看GPU状态
nvidia-smi
# 更新项目
git pull
pip install -r requirements.txt --upgrade
开始
↓
能启动程序吗?
├─ 否 → 检查Python安装 → 重新安装Miniconda
└─ 是 ↓
有GPU吗?
├─ 是 → 检查CUDA → 安装CUDA 11.7 + cuDNN
└─ 否 → 使用CPU版本 ↓
能识别到字幕吗?
├─ 否 → 检查字幕区域 → 使用GUI预览功能
│ 检查语言设置 → 确认语言选择正确
│ 提高清晰度 → 使用高清视频
└─ 是 ↓
识别准确吗?
├─ 否 → 使用精准模式
│ 添加错词映射
│ 手动校对
└─ 是 ↓
完成!🎉
中文简体 (ch) 英语 (en) 日语 (japan)
中文繁体 (chinese_cht) 韩语 (korean) 法语 (french)
德语 (german) 俄语 (ru) 西班牙语 (es)
葡萄牙语 (pt) 阿拉伯语 (ar) 意大利语 (it)
荷兰语 (dutch) 泰语 (th) 越南语 (vi)
印地语 (hi) 土耳其语 (tr) 波兰语 (pl)
等等... 共87种语言
完整列表请查看 backend/config.py 中的 LANG_DICT
| 模式 | 速度 | 准确度 | 显存占用 | 适用场景 |
|---|---|---|---|---|
| 快速 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 低 | 快速预览、低配置电脑 |
| 自动 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 中 | 日常使用(推荐) |
| 精准 | ⭐⭐ | ⭐⭐⭐⭐⭐ | 高 | 专业字幕制作 |
测试视频:1080p,17秒,434帧
| 配置 | 提取模式 | 耗时 | 速度 |
|---|---|---|---|
| Intel i7 (CPU) | 快速 | ~120秒 | 3.6帧/秒 |
| Intel i7 (CPU) | 精准 | ~300秒 | 1.4帧/秒 |
| GTX 1060 (GPU) | 自动 | ~40秒 | 10.9帧/秒 |
| RTX 3080 (GPU) | 自动 | ~15秒 | 28.9帧/秒 |
| Tesla T4 + 智能脚本 | 自动 | ~10秒 | 43.4帧/秒 |
恭喜你!读到这里,你已经掌握了视频字幕提取器的所有使用方法。
如果这个工具帮到了你,请给项目点个⭐Star: https://github.com/YaoFANGUK/video-subtitle-extractor
祝使用愉快!🚀

认证作者