
竖屏短剧里,一句字幕可能同时压住嘴型、衣服上的线索和底部播放按钮。生成出视频不等于审片完成;字幕是否可读、人物表情有没有被挡住,是预览页应该暴露的问题。
Gemini Omni 文档提供了视频生成相关流程,但本文没有调用模型,也不评价其中文对白准确率。这里使用人工标注的画面区域,把“字幕放哪里”做成可以检查的布局决策。WebVTT 负责时间对齐文本轨,不会自动理解人物表情,更不会替你制定平台安全区。
先统一坐标,再谈遮挡
假设源画面是 360×640。所有区域都用源画面坐标记录,不能把播放器 CSS 像素与视频像素混算。若 object-fit 使用 contain,要先计算黑边偏移;若使用 cover,裁掉的区域也必须反映到映射里。下面只验证源坐标中的矩形关系,不涉及自动人脸识别。
教学配置把字幕带限定在安全区域内,再检查它与人工标注的重要区域是否相交。安全区域是项目约定,不是通用平台规范;不同投放渠道应提供各自可追溯的配置。
import assert from 'node:assert/strict';
const safe = {x:18,y:32,w:324,h:560};
function valid(r) {
return Object.values(r).every(Number.isFinite) && r.w > 0 && r.h > 0;
}
function inside(a, b) {
return a.x >= b.x && a.y >= b.y &&
a.x+a.w <= b.x+b.w && a.y+a.h <= b.y+b.h;
}
function overlap(a, b) {
return a.x < b.x+b.w && a.x+a.w > b.x &&
a.y < b.y+b.h && a.y+a.h > b.y;
}
function inspect(band, important) {
if (!valid(band) || important.some(r => !valid(r))) throw Error('rectangle');
return {
outsideSafe: !inside(band, safe),
overlaps: important.flatMap((r,i) => overlap(band,r) ? [i] : [])
};
}
const face = {x:100,y:180,w:120,h:140};
assert.deepEqual(inspect({x:30,y:500,w:300,h:60},[face]),
{outsideSafe:false,overlaps:[]});
assert.deepEqual(inspect({x:30,y:260,w:300,h:60},[face]).overlaps,[0]);
assert.equal(inspect({x:30,y:570,w:300,h:60},[]).outsideSafe,true);
assert.throws(() => inspect({x:0,y:0,w:NaN,h:20},[]), /rectangle/);
console.log('source-space subtitle bounds and manual region overlap checked');
警告应能带着人回到那一帧
检查结果不能只有“有遮挡”。审阅项至少显示镜头版本、对应时码、涉及区域、字幕文本与修改动作。矩形碰撞只给出候选问题:透明文字框不一定实际遮住脸,区域没相交也不代表字够大、对比够高。最终决定仍要看实际渲染与内容语义。
原生 track 可以提供可切换字幕;自绘字幕预览应同时保留语义文本,不能只画进 Canvas。WebVTT 当前引用的是 2026 年 5 月的候选推荐草案,文档状态不能写成正式 Recommendation。长中文、标点、混合英文和重叠 cue 都应进入样本集,而不是只用一句短对白截屏。
不把回调时间当成绝对同步
requestVideoFrameCallback 的 metadata.mediaTime 适合关联当前视频帧时间;回调可能晚一个垂直同步周期,主线程拥挤时也会延迟。审阅界面需要区分播放预览、暂停定位和最终导出。不能因为回调里画了字幕,就承诺导出视频逐帧准确;导出管线与时基还要单独验证。
验收时关闭字幕看表情,开启字幕看阅读,再显示安全区检查裁切。区域框应有开关,以免辅助线本身妨碍审片。截图应记录实际字体、播放器尺寸、DPR 和镜头版本,便于复查。

图中安全区和人物框是教学约定,并非自动检测结果或任何平台的官方尺寸要求;封面中的审阅元素也不代表实测评分。
预览层的价值是让错误更容易被发现,并保存修改理由。当前示例只检查几何边界;真实 VTT 渲染、长字幕排版、音画同步和导出结果仍待带素材走查,不把这些待做项写成已通过。
验证范围与资料
本地使用 v26.3.0 检查上述示例。纯 JavaScript 示例已在 Node 权限隔离模式执行,断言通过。已执行矩形边界、交叠与非法输入测试;未加载视频、VTT 或运行逐帧同步测试。
以下发布日期或版本日期与访问日期分开记录;24—31日的新消息须发稿前再核对。
Generate and edit videos with Gemini Omni Flash:2026-09-23(页面更新)。
WebVTT: The Web Video Text Tracks Format:2026-05-20(Candidate Recommendation Draft日期)。
HTMLVideoElement.requestVideoFrameCallback():2025-09-11(最后修改)。
Web Content Accessibility Guidelines (WCAG) 2.2:2024-12-12(当前所读推荐版本日期)。
requestVideoFrameCallback 官方提案:2024-08-02,Draft Community Group Report。
本文聚焦竖屏短剧字幕布局的可验证性,提出基于源画面坐标统一的矩形碰撞检测方案,避免字幕遮挡嘴型、关键线索及UI控件。强调WebVTT时间对齐与几何布局分离,安全区配置需项目级可追溯,审阅结果须支持帧级定位与修改留痕。指出requestVideoFrameCallback存在时序偏差,导出同步需独立验证,并明确预览层仅覆盖几何检查,不替代真实渲染与WCAG可访问性评估。

358

被折叠的 条评论
为什么被折叠?



