tamakyi
|
cbe5dfa982
|
弹幕字号按画面短边自动定,竖屏成片不再字大到铺满整行
1. 字号基准从「画面高度」改成「画面短边」
以前合并时只用高度比换算字号(字号 × 视频高 ÷ 弹幕文件高)。横屏弹幕文件
(1920x1080、60 号)配竖屏视频(720x1280)时会被放大到 71 号,而画面只有
720 宽,一条 10 字弹幕就铺满整行。横竖屏互换时高度不是约束文字宽度的维度,
短边才是:横屏取高、竖屏取宽。
2. 「弹幕字号」填 0 的含义从「跟随弹幕文件」改成「自动按画面分辨率」
取画布短边的 5.56%(60/1080)。于是 1920x1080 → 60、1280x720 → 40、
960x540 → 30,横屏行为与以前完全一致;720x1280 → 40(以前 60)、
640x1280 → 36。填大于 0 仍是精确像素覆盖。
3. 录制端竖屏档位预设 720x1280 的字号从 60 改成 40
原来横屏三档都是短边的 5.56%,只有竖屏这档是 8.33%,比横屏大 50%。
改完四档口径一致,新录的弹幕文件和成片也对得上。
4. 坐标系和字号拆开
unifyDanmuSpace 只负责把 PlayRes 统一到视频分辨率,字号统一交给
applyFontSize 按最终画布算,避免两处各改一次。
5. .gitignore 加上 /avatar_cache
头像缓存挪到程序目录后,程序正好跑在仓库里,缓存目录会被 git 看见,
git add . 会把那 336 个 PNG 一起提交进去。
已验证:
- 新增 TestShortSide / TestAutoFontSize / TestSubConfigsMatchAutoFontSize /
TestApplyFontSize;TestUnifyDanmuSpace 改成只校验 PlayRes,并且新增断言
确认它不再动字号。
- 反向验证:把短边规则临时退回「按高度」,TestAutoFontSize 报
「720x1280 应为 40,实际 71」「1080x1920 应为 60,实际 107」,
TestApplyFontSize、TestSubConfigsMatchAutoFontSize 同步失败。
- 端到端:造 720x1280 竖屏视频 + 1920x1080/60 号的 jsonl,字号填 0 真跑一次合并,
日志打出「竖屏画布 720x1280,弹幕字号自动取 40」;同一输入再用旧规则跑一次对照,
抽同一时刻的帧量墨迹高度:改前 46px、改后 25px(1.84 倍)。
- gofmt / go vet / go build / GOOS=linux go build / go test 全过。
|
2026-09-26 00:59:17 +08:00 |
|