从 MKV 视频中提取中文和英文字幕,合并为双语字幕(英文在上,中文在下),再嵌入回 MKV。
brew install mkvtoolnixbash
# 单个文件
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
扫描字幕轨道 — mkvmerge -i 识别所有字幕轨道,按语言匹配中文(chi/zho/zh/cn)和英文(eng/en)
提取字幕 — mkvextract tracks 将中英文字幕提取为独立文件
合并字幕 — 基于时间戳重叠匹配,合并为中英双语条目:
嵌入回 MKV — mkvmerge -o 将双语字幕作为新轨道嵌入,设为默认字幕轨道
替换源文件 — 用新文件替换原始 MKV(文件名不变),整个过程原子性操作
\N + 中文文本选项说明-o, --output指定输出文件路径(不指定则直接替换源文件)-r, --recursive递归搜索子目录--keep-temp保留提取的临时字幕文件--dry-run预览模式,不实际执行
当用户给出文件夹路径或涉及多个文件时,必须先列出目录内容让用户确认后再执行。
流程:
示例输出格式:
text
| # | 文件 | 大小 | 状态 |
|---|------|------|------|
| 1 | S01E01 ... | 1.0G | ⬜ 待处理 |
| 2 | S01E02 ... | 989M | ✅ 已处理 |
-o 指定输出路径chi,轨道名为 中英双语