SuperAPI AI 工具集

wjs-burning-subtitles

通用与其它

查看项目

更新于 10-15 23:32

技能介绍

用途:把视频与 SRT 字幕合成为带字幕的视频,支持两种方式——硬烧(burn-in,字幕进入像素,始终可见)与软封装(soft-mux,mov_text 可开关字幕轨)。它也是本地化流程的最终编码阶段:接收视频、可选的配音轨与可选 SRT,一次 ffmpeg 编码产出可上传的 MP4,避免多次解码重编码。

主要能力:scripts/render.py 依据参数自动判断三种模式——仅字幕(--video + --srt,重编码视频并烧入字幕,原音频直通)、仅配音(--video + --dub,保留原视频流,替换或混合音轨)、完整本地化成片(--video + --srt + --dub,烧字幕并混音,默认把原声以低音量作为底衬,可用 --bed-volume 0 或 --no-original-audio 去掉)。软封装用流复制,速度快且可逆,适合支持内嵌字幕的播放器;硬烧需要带 libass 的 ffmpeg,脚本在首次使用时会尝试自动下载 evermeet.cx 的静态构建到 /tmp/ff_bin/。

使用方式:命令行运行 render.py,例如仅烧字幕:python3 ~/.claude/skills/wjs-burning-subtitles/scripts/render.py --video IN.mp4 --srt SUB.srt --out OUT.mp4;软封装加 --soft-mux;完整成片同时传 --srt 与 --dub。样式与音频参数见 render.py --help(--font、--fontsize、--color、--outline-color、--margin-v、--bed-volume、--no-original-audio 等)。硬烧前应先确认 ffmpeg 支持 subtitles/ass 滤镜,并先渲染前 30 秒或抽取最长行字幕所在帧检查字号与边距,确认后再跑全片。

适用场景:微信视频号、抖音等不识别内嵌字幕轨的平台需要硬烧;QuickTime、VLC、IINA 等支持 mov_text 的播放器可用软封装;配音视频需要把目标语言字幕与原声底衬一次合成时使用完整模式。

限制与注意:硬烧会重编码整段视频,耗时较长;force_style 内每个逗号需转义为 ,;libass 的 Fontsize 按 PlayRes 比例缩放而非输出像素,需按分辨率重新校准;SRT 每行建议不超过约 15 个中文字符并显式换行;不要与 HyperFrames 的 HTML/CSS 字幕混用;部分安卓播放器不显示 mov_text 轨。上游依赖 /wjs-transcribing-audio、/wjs-translating-subtitles 生成 SRT,/wjs-dubbing-video 生成配音轨。