dsh-subtitle-remover:在 DSH 側邊欄擦除視頻字幕

前言

給視頻批量去字幕,通常要在外部工具裏單獨打開工程、手工框選字幕區域、再導出對比。一個 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 爲準。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜