Speaker Cutout 是 motion-graphics-skills 中的一个技能,主题是“出镜人物抠像与景深分层”。它的核心观点是:出镜人物是画面中的一个独立图层,而不是直接贴在图形上的一张图片;处理时应刻意安排前景与背景的关系,同时保留身体边缘、视线、字幕和场景的连续性。
用途与决策门槛 该技能适用于故事需要在出镜人物背后或旁边承载信息的场景。资料明确指出:不要仅仅因为“具备分割能力”就做人物隔离。以下情况应保留原始完整镜头:环境本身有意义;头发或手部附近遮罩质量不稳定;新背景造成光照不匹配;图形无需移除房间即可干净放入;分割只增加复杂度而无助于表达。
图层层级 保持以下顺序:背景(Backdrop)、出镜人物后方(BehindPresenter)、出镜人物抠像(PresenterCutout)、前景 UI(ForegroundUI)。字幕和关键 UI 应位于人物之上;希望看起来“嵌入场景”的图形应放在人物之后。
使用流程
1)分割前先检查素材:发丝细节、运动模糊、手部动作、衣物与背景的对比、阴影、镜头运动,以及是否存在干净的房间底板。若素材难以分割,应改用更简单的构图,而不是用更多特效掩盖边缘问题。
2)生成或复用 alpha 素材:优先使用当前项目自带的主体提取流程;独立流程可用 Apple Vision、rembg 或其他分割系统生成 alpha 源,并为头发和手部保留足够的边缘细节。
3)确定出镜模式:画中画(PiP)使用 python3 scripts/speaker_layer.py --mode pip --scale 0.65 --anchor-x 0.85 --anchor-y 0.90;全画幅使用 python3 scripts/speaker_layer.py --mode full。资料说明:全画幅模式始终把完整画面放在 0,0 位置;PiP 模式使用给定的缩放和锚点。
4)明确规划时间轴窗口:出镜状态必须有合法的有限区间,满足 0 <= start < end <= total_duration;非法窗口应被拒绝,而不是输出负值或越界时长。时间轴窗口可用来区分背景变化、人物缩放变化、人物移动和图形揭示;除非创作方向明确要求硬切换,否则不要在同一帧同时触发这四项。
5)合成景深层:内置辅助脚本生成基础景深堆叠,典型结构为“背景 + 人物后方图形 + alpha 出镜人物 + 最终合成中的字幕”。如果已有稳定的 HyperFrames 合成,应把抠像作为该运行时中的一个图层,而不是另建一条渲染管线。
过渡逻辑 可靠的“房间画面转画中画”过渡顺序为:先建立替换背景,保持足够时长以维持视觉连续,再缩放并移动出镜人物,最后揭示需要腾出空间展示的信息。这样可以避免观众看到重复的房间,或感觉出镜人物“瞬移”。
合成质量检查 检查项包括:边缘羽化是否克制;发丝周围是否出现亮边光晕;肤色在新环境中是否协调;脚部或躯干是否被意外裁切;视线是否仍指向可用的构图空间;人物后方图形被部分遮挡时是否仍可理解。不要用强光晕掩盖分割质量差的问题。
创作验收(硬性失败条件) alpha 边缘逐帧抖动;全画幅模式实际并非全画幅;出镜人物挡住布局本应揭示的信息;字幕落到抠像图层之后;背景与人物光照感觉无关;过渡中出现可见的“双人”;PiP 过小导致面部表情无法辨认。
限制与经验 资料强调:技术上干净的遮罩,如果光照和比例不一致,仍会显得虚假;背景变化与人物移动需要排序;抠像布局只有在腾出的空间承担明确信息功能时才最有效;保留原始镜头往往比强行对每个口播场景做分割更好。