Video Subtitle
给影片自动加入字幕并烧进画面,产出「带字幕 MP4 + SRT」。
流水线
- 抽取 16k 单声道 wav(ffmpeg)
- whisper.cpp 转录出 SRT(whisper-cli)
- SRT → ASS:按画面宽度自动断行、CJK 字体、底部居中半透明底框
- 用带 libass 的 ffmpeg 烧录 ASS,音轨直接 copy
用法
bash scripts/add_subtitles.sh input.mp4 -o output.mp4 -l zh
-l/--language源语言,默认zh,可传auto-f/--fontsize字号,默认 42-s/--srt-only只出 SRT,不烧录
必须遵守
- 先看转录文本再交付:脚本会把 SRT 打印到终端。人名、地名、成语常被识别错(例:「重阳姐」→「重阳节」、「久久重扬」→「九九重阳」)。有错就用
-s重新出一版,改好 SRT 再烧录。 - 校验成品:从成片抽 2–3 帧(
-ss <秒> -frames:v 1)确认字幕完整、没有被裁切或溢出画面。 - 不要用 Homebrew 的精简
ffmpeg:该构建没有 libass,subtitles/ass/drawtext滤镜全部缺失。脚本会自动挑选带 libass 的 ffmpeg,装法见 README.md。 - 长句必须断行:ASS 用
WrapStyle: 2(只认\N),srt_to_ass.py已按画面宽度 / 字号自动插入\N。若某句仍溢出,调小-f字号。
环境依赖
ffmpeg(带 libass)+ whisper-cli + ggml 模型 + python3。缺失时脚本会给出明确报错。完整库清单、安装命令与排错说明见 README.md。