前言¶
给视频批量去字幕,通常要在外部工具里单独打开工程、手工框选字幕区域、再导出对比。一个 DSH 插件把这条链路搬进了 Harness 窗口:左侧栏多一个「字幕擦除」入口,选视频、框区域、跑任务都在同一个页面完成,省去在桌面应用和命令行之间来回切。下面介绍 lijianbin2 维护的 dsh-subtitle-remover。
这是什么¶
dsh-subtitle-remover 是 DSH Web UI 的一个插件,为左侧栏增加一个 字幕擦除 / Subtitle Remover 入口,把本地的 video-subtitle-remover 引擎(简称 vsr)接到 Harness 里:画面框选区域、自动识别与模型复核、处理区间、实时前后对比都在同一页面内完成。
插件本身只负责调用引擎,不打包引擎代码与模型。引擎是独立的 Apache-2.0 项目。插件仓库 license 为 MIT,version 1.0.0。
核心功能¶
页面(main panel keyed by subtitle-remover)提供:
- 视频路径与目录选择器,支持盘符、文件夹、视频文件和大小信息。
ffprobe读取的分辨率、fps、帧数、时长。- 帧预览配合起始/结束时间区间,以及区域编辑器:框内拖动移动,右下角拖动缩放,起始帧和结束帧都能查看。
- 同时标记多个区域(上限 6 个),每个区域也可数值编辑。
- 自动区域识别:调用引擎自带的 PP-OCR 文本检测器对采样帧检测,把候选框写回同一个编辑器,仍可手动调整。
- 模型复核:检测后插件可以把候选条带和视频元数据交给 DSH 聊天模型,由模型判断哪些是真实字幕、用哪个修复模型,默认用 DSH 当前选中的模型,页面可切换。
- 一键
Run automatically:检测、模型判定、开跑一条龙。 - 修复模型和字幕检测器的选择、可选的输出目录。
- 处理区间:只重写区间内的帧,区间外原样复制。
- 实时对比预览:任务运行时引擎的预览钩子以节流方式写出前后 JPEG 对,页面并排显示原帧与修复帧,附帧号和百分比。
- 任务进度、帧数、已用/剩余时间、速度、输出路径与复制。
- 任务完成后一键打开文件或在文件夹中显示,任务卡片和历史行都有入口。
- 页面内引擎设置:扫描常见位置、手动选目录和解释器(保存在插件目录,不改 profile),以及对没有引擎的机器一键安装(clone + 虚拟环境 + PyTorch/PaddlePaddle)。
任务运行时左侧栏入口会有一个小动画提示。
安装与启用¶
安装分两步:先把引擎准备好,再把插件加进 DSH。
README 给出的步骤如下。
1、确保 video-subtitle-remover 在同一台机器上可用:模型已下载、config/config.json 就位,Python 环境中已装 torch / paddle / cv2。
2、把插件仓库 clone 到稳定位置。自动检测覆盖几种布局,vsr 与 vsr-env 可以在插件目录内,也可以在同级或上级 plugins/ 目录下(注意这是 README 的推荐做法,不是插件安装命令):
cd <dir> # or <parent>\plugins
git clone https://github.com/lijianbin2/dsh-subtitle-remover
上述任一种布局都无需配置,页面安装器默认使用 engine/ 布局。其他布局也可以,设置 vsrRoot / pythonPath(见配置一节),或在页面里手动指向。
3、加入 DSH:在 Plugins 页面添加这个文件夹,或调用 plugin manager 的 install_bundle,传入其绝对路径。
4、打开左侧栏入口 字幕擦除 / Subtitle Remover。
配置¶
所有配置项都是可选的,插件会先自动探测 checkout 和解释器(<workspace>/vsr、<workspace>/vsr-env/Scripts/python.exe)。
- id: dsh-subtitle-remover
name: dsh-subtitle-remover
config:
vsrRoot: 'D:\tools\video-subtitle-remover' # 包含 backend/main.py 的目录
pythonPath: 'D:\tools\vsr-env\Scripts\python.exe'
ffmpegPath: 'C:\ffmpeg\bin\ffmpeg.exe' # 预览帧;否则用 checkout 自带副本
ffprobePath: 'C:\ffmpeg\bin\ffprobe.exe' # 仅用于元信息读取
defaultDir: 'D:\videos'
defaultMode: 'sttn-auto'
defaultDetect: 'server' # 或 'mobile'
优先级:页面保存的目录 → 上面的配置 → 自动探测。手动选择保存在 <DSH_HOME>/data/dsh-subtitle-remover/settings.json,插件升级后仍然有效。
自动探测会查找插件旁、~、~/Documents、~/projects 和工作目录中的 video-subtitle-remover checkout 及其虚拟环境。一键安装默认目标是插件目录内的 engine/video-subtitle-remover,可选可改,需要 git 和命令行里的 Python 3.10+,并会下载数 GB 内容。注意模型文件不在引擎仓库里:装好引擎后,要把 video-subtitle-remover release 压缩包(或已有安装)里的 backend/models 复制到 clone 出的目录,页面会明确提示缺哪些文件。
与引擎的通信方式¶
Host 端用本地 checkout 的解释器启动 runner/ 下的脚本。两者在私有通道(@@VSR@@ {...})上逐行输出 JSON 事件,引擎自身的 tqdm/paddle 输出走 stderr:
vsr_runner.py擦除字幕,每个标记区域一个--area。vsr_detect.py采样帧、把检测到的文本框聚类成条带并以百分比报告。条带按宽度、水平居中程度和帧命中数排序,因此角落的 HUD 文本(弹药计数、击杀播报、小地图)不会盖过又宽又居中的字幕行。
页面通过 Harness webServer 上的 /dsh-subtitle-remover/api/* 轮询(同源绑定,校验 loopback 和同源):
| 路由 | 用途 |
|---|---|
GET /state |
环境判定、任务、正在运行的检测 |
GET /jobs,GET /jobs/<id> |
任务列表 / 带日志的单个任务 |
POST /jobs,POST /jobs/<id>/cancel,POST /jobs/<id>/remove |
任务生命周期 |
GET /browse?path= |
选择器用的目录列表 |
GET /probe?path= |
通过 ffprobe 读取视频元信息 |
GET /frame?path=&t= |
通过 ffmpeg 取一帧 JPEG 预览 |
GET /jobs/<id>/preview/left\|right |
实时前后对比帧 |
POST /jobs/<id>/open |
用系统句柄打开输出文件或所在文件夹 |
GET /models |
DSH 模型目录及当前选中项 |
POST /detect,GET /detect/<id>,POST /detect/<id>/cancel |
自动区域检测(可选模型复核) |
典型使用方式¶
README 给出的路径分手动和自动两种。
手动流程:打开 字幕擦除,选视频,在帧预览上框出字幕区域(最多 6 个),设定处理区间,选修复模型和字幕检测器,然后启动任务。任务卡上可以直接看到运行时的前后对比,结束后从任务卡片或历史行打开成片。
自动流程:点 Run automatically,插件先采样帧做 PP-OCR 检测,把候选条带给 DSH 聊天模型判定是否为字幕并选修复模型,然后一键开跑。也可以只跑检测,在编辑器里确认或调整后再启动。
引擎没装的机器上,可以先在页面里点一键安装,再把 backend/models 补进 clone 目录,之后回到页面选择引擎目录即可。
适用场景与注意事项¶
适合已经用 DSH、需要在同一套工作流里给视频去内嵌字幕的开发者,尤其是想用本地引擎、不依赖云端推理的场景。分类上属于模型推理,因为实际的检测与修复都由本地 video-subtitle-remover 的 torch / paddle 环境完成,页面只负责编排和展示。
几点注意:
- 插件以当前 dsh 进程的权限运行,一键安装会执行 git clone、建虚拟环境、装 PyTorch / PaddlePaddle,装之前应先检查插件源码与许可证(插件 MIT,引擎 Apache-2.0)。
- 引擎依赖本地环境:torch / paddle / cv2、可选的 CUDA 或 CPU 版 PyTorch、
ffmpeg(checkout 自带副本)与ffprobe。 - 模型文件需从 release 归档或已有安装获取,引擎仓库不含。
- 一键安装会下载数 GB 内容,并需在
PATH上有git和 Python 3.10+。
小结¶
dsh-subtitle-remover 的价值在于把本地 video-subtitle-remover 引擎收进 Harness 侧边栏:选片、框选、模型判定、实时对比、区间输出在一页完成,不改变引擎本身的运行方式。目录页在 https://www.skillhub.cn/plugins/lijianbin2/dsh-subtitle-remover,仓库在 https://github.com/lijianbin2/dsh-subtitle-remover。DSH 的插件目录是社区站点,与 DeepSeek / 幻方没有官方从属关系,安装前建议以仓库 README 为准。