给已剪好的竖屏短视频做最后一公里:加字幕、做封面、接片尾、去水印,然后一次性批量导出。 全程在浏览器里操作,本地跑,不上传任何素材。
针对微信视频号的竖屏(720×1280)场景做了适配,但对任何分辨率的视频都能用。
| 步骤 | 说明 | 可选 |
|---|---|---|
| 选视频 | 扫描指定目录,缩略图网格多选 | 必需 |
| 去水印 | 自动识别角落固定水印并消除,可拖框微调 | ✅ |
| 字幕 | FunASR 中文识别 → 网页逐句校对 → 烧进画面 | ✅ |
| 封面 | 取任意帧 + 醒目标题,可拖拽定位,接到片头当首帧 | ✅ |
| 片尾 | 上传 logo 视频接在正片后 | ✅ |
| 导出 | 执行前汇总,批量输出 | 必需 |
中间四步都能跳过,各自带独立开关,互不依赖。
- 字幕预览是真帧:用 libass 实际渲染一帧,与最终烧录同一引擎,不存在"预览看着行、导出偏了"。
- 字幕必须烧进画面:视频号不支持外挂字幕。默认底边距 190px 避开底部按钮遮挡,预览里有安全区标线。
- 封面接进视频:作为第一帧停留 1 秒,上传时选「首帧」即为封面,不用另传图。
- 去水印也作用于封面:封面取自视频帧,不处理的话封面上会残留水印。
- 拼接自动对齐:片头/片尾与正片分辨率、帧率不同会自动缩放补边,无声片段补等长静音,避免音画错位。
- 样式全局统一:所有样式参数存
cache/_style.json,改一次对全部视频生效。
需要先装好 ffmpeg(要求带 libass、libfreetype,Windows 推荐 gyan.dev 的 full build)并加入 PATH:
ffmpeg -version # 确认可用
pip install -r requirements.txt字体:默认用微软雅黑 / 黑体(Windows 自带)。其他系统需修改 server.py 里的 FONTS。
python server.py # 然后打开 http://127.0.0.1:8731Windows 可直接双击 启动.bat。
默认扫描上级目录的视频,可用环境变量指定:
VIDKIT_MEDIA=/path/to/videos python server.py首次做字幕识别时会自动下载 FunASR 模型(paraformer-zh + fsmn-vad + ct-punc,约 1GB),之后本地缓存。
导出到 output/:
原名_成品.mp4— 封面片头 + 正片(字幕已烧录、水印已去除)+ 片尾原名_封面.jpg— 单独的封面图
- 封面标题里用
[方括号]包住的词会渲染成高亮色:普通人翻身只有这[三条路] - 标题支持回车强制换行,也会按字数自动断行
- 「水平居中」勾上时标题只能上下拖,批量做封面时左右严格对齐
- 字幕表格里点任意一句,即可预览那一句的实际效果
- 去水印基于 ffmpeg
delogo(用框周围像素插值填补),只对位置固定的水印有效,滚动水印不行。背景越复杂,残留的插值痕迹越明显,把框调小贴紧水印会好一些。 - 若去除的是 AI 生成标识,按《人工智能生成合成内容标识办法》(2025-09 施行)相关要求,发布时应通过平台的「内容由 AI 生成」声明等方式保留标识。
FastAPI + 原生 JS 单页(无构建步骤) / ffmpeg + libass / FunASR / Pillow / OpenCV