MKV视频双语字幕合并工具。从MKV文件中提取简体中文和英文字幕,合并为中英双语字幕(英文在上中文在下),再嵌入回MKV文件。支持SRT和ASS/SSA字幕格式,支持单文件和批量文件夹处理。触发场景:用户要求将MKV中的中英字幕合并、制作双语字幕、中英混合字幕、字幕合并嵌入、MKV字幕处理。触发词:双语字幕、中英...
--- name: mkv-bilingual-subtitle display_name: 双语字幕 description: "MKV视频双语字幕合并工具。从MKV文件中提取简体中文和英文字幕,合并为中英双语字幕(英文在上中文在下),再嵌入回MKV文件。支持SRT和ASS/SSA字幕格式,支持单文件和批量文件夹处理。触发场景:用户要求将MKV中的中英字幕合并、制作双语字幕、中英混合字幕、字幕合并嵌入、MKV字幕处理。触发词:双语字幕、中英字幕、合并字幕、混合字幕、字幕嵌入、MKV字幕。" --- # MKV Bilingual Subtitle Merger 从 MKV 视频中提取中文和英文字幕,合并为双语字幕(英文在上,中文在下),再嵌入回 MKV。 ## Requirements - **mkvmerge** + **mkvextract** (MKVToolNix) — 必需,用于提取和嵌入字幕 - 安装:`brew install mkvtoolnix` - 仅支持文本字幕(SRT / ASS / SSA),不支持图像字幕(PGS / VobSub) ## Quick Start ```bash # 单个文件 python3 scripts/merge_subs.py /path/to/video.mkv # 批量处理(文件夹内所有 mkv) python3 scripts/merge_subs.py /path/to/videos/ # 递归处理子文件夹 python3 scripts/merge_subs.py /path/to/videos/ --recursive # 预览模式(不执行,只显示哪些文件可以处理) python3 scripts/merge_subs.py /path/to/videos/ --dry-run ``` 脚本路径:`scripts/merge_subs.py` ## How It Works 1. **扫描字幕轨道** — `mkvmerge -i` 识别所有字幕轨道,按语言匹配中文(chi/zho/zh/cn)和英文(eng/en) 2. **提取字幕** — `mkvextract tracks` 将中英文字幕提取为独立文件 3. **合并字幕** — 基于时间戳重叠匹配,合并为中英双语条目: - 完全匹配:直接合并,取时间并集 - 部分重叠(>30%):合并,取时间并集 - 无匹配:保留原文条目 4. **嵌入回 MKV** — `mkvmerge -o` 将双语字幕作为新轨道嵌入,设为默认字幕轨道 5. **替换源文件** — 用新文件替换原始 MKV(文件名不变),整个过程原子性操作 ## Output Format - **SRT**:英文行 + 换行 + 中文行 - **ASS**:英文文本 + `\N` + 中文文本 ## Options | 选项 | 说明 | |------|------| | `-o, --output` | 指定输出文件路径(不指定则直接替换源文件) | | `-r, --recursive` | 递归搜索子目录 | | `--keep-temp` | 保留提取的临时字幕文件 | | `--dry-run` | 预览模式,不实际执行 | ## Error Handling - 无字幕轨道 → 提示并跳过 - 无中文或英文字幕 → 提示并跳过 - 图像字幕(PGS/VobSub)→ 提示不支持并跳过 - mkvmerge/mkvextract 未安装 → 提示安装命令 ## Batch Processing Rules **当用户给出文件夹路径或涉及多个文件时,必须先列出目录内容让用户确认后再执行。** 流程: 1. 扫描目录,列出所有 MKV 文件(文件名 + 大小 + 字幕状态) 2. 标记已处理和待处理文件(已有「中英双语」字幕轨 = 已处理) 3. 等待用户确认后再执行批量处理 4. 用户可以指定范围(如「只处理 E03-E10」) 示例输出格式: ``` | # | 文件 | 大小 | 状态 | |---|------|------|------| | 1 | S01E01 ... | 1.0G | ⬜ 待处理 | | 2 | S01E02 ... | 989M | ✅ 已处理 | ``` ## Notes - 默认**直接替换源文件**(文件名不变),如需保留源文件请用 `-o` 指定输出路径 - 合并后的双语字幕轨道语言标记为 `chi`,轨道名为 `中英双语` - 批量处理时自动统计成功/跳过/失败数量 - 单文件处理时无需确认,直接执行
don't have the plugin yet? install it then click "run inline in claude" again.