npx hyperframes lint(请参阅 CLI)。
动画视频元素尺寸
动画视频元素尺寸
症状: 视频帧停止更新,或浏览器性能严重下降。原因: GSAP 直接在 之后(固定):使用非定时包装
<video> 元素上对 width、height、top、left 进行动画处理可能会导致浏览器停止渲染帧。之前(破损):index.html
index.html
index.html
<div> 来实现画中画等视觉效果。为包装器设置动画;让视频通过CSS填充它。在脚本中控制媒体播放
在脚本中控制媒体播放
症状: 音频/视频播放不同步,或不应该播放。原因: 在脚本中调用 之后(固定):该框架读取
video.play()、video.pause() 或设置 audio.currentTime。 框架拥有所有媒体播放。之前(破损):index.html
index.html
data-start、data-media-start 和 data-volume 来控制媒体播放的时间和方式。有关 HTML 原语和脚本之间的分离,请参阅组合:两层。作文时长比视频短
作文时长比视频短
症状: 视频播放几秒钟然后停止。尽管视频长达几分钟,但时间线显示 8-10 秒。原因: 合成持续时间等于 GSAP 时间线持续时间,而不是视频上的 之后(固定):
data-duration。如果您的最后一个 GSAP 动画在 8 秒结束,则合成的长度为 8 秒 - 无论视频源有多长。之前(破损):index.html
index.html
tl.set({}, {}, TIME) 在指定时间添加零持续时间补间,延长时间线而不影响任何元素。定时元素上缺少 class='clip'
定时元素上缺少 class='clip'
症状: 元素始终可见,忽略其 之后(固定):
data-start 和 data-duration 计时。原因: class="clip" 属性告诉运行时管理元素的可见性生命周期。如果没有它,元素将始终被渲染。之前(破损):index.html
index.html
linter 捕获这个:
npx hyperframes lint 将标记定时元素缺少 class="clip"。超大源图像
超大源图像
症状: 在屏幕上显示图像的场景中预览卡顿。渲染速度比预期慢。原因: 源图像的分辨率比画布高得多。 Chrome 在显示图像之前将图像解码为原始 RGBA 位图,位图大小为 之后(尺寸适合画布):经验法则: 源图像最多为画布尺寸的 2 倍。对于 1920×1080 的构图,3840×2160 已经足够了。请参阅性能:图像大小调整。
width × height × 4 字节 - 与磁盘上的文件大小无关。 7000×5000 JPEG 的解码大小为 140MB,即使文件只有 2MB。在 384×1080 区域中显示这样的图像会浪费内存,并迫使合成器每帧重新采样巨大的纹理。之前(臃肿):index.html
Terminal
index.html
重型背景滤镜堆栈
重型背景滤镜堆栈
症状: 预览中特定场景的帧率下降至 5-10 fps。其他地方的构图都很好。原因: 之后(3 个调整层):指南:
backdrop-filter: blur() 在大型元素上,尤其是在高半径处堆叠。每个模糊层都会强制合成器对元素后面的像素进行采样,运行模糊内核,然后合成结果。堆叠层数会增加成本。之前(昂贵):- 每个区域堆叠
backdrop-filter层至 2-3 层 - 避免在大面积上使用超过 64 像素的半径 - 最大的半径在总成本中占主导地位
- 对于静态模糊效果,将其预渲染为 PNG 一次,并用常规
<img>覆盖
预期 HDR 输出但得到 SDR
预期 HDR 输出但得到 SDR
症状: 预期是 HDR 渲染,但输出看起来与 SDR 或
ffprobe 报告 color_transfer=bt709 相同。原因: 默认情况下,只有当源 <video> 或 <img> 用 BT.2020 / PQ / HLG 颜色元数据标记时,HyperFrames才会切换到 HDR 编码。未启用 HDR 的常见原因:-
所有来源均为 SDR。 自动检测会将仅 SDR 的成分保留在 SDR 中。使用
ffprobe验证:Terminal -
输出格式错误。 HDR 输出需要 MP4。
--format mov和--format webm回退到 SDR — 当发生这种情况时,Hyperframes 会记录警告。 -
SDR 是强制的。 即使 HDR 源存在,
--sdr也会禁用 HDR。
--hdr 强制使用。--docker 的工作方式与本地渲染相同 - 自动检测、--hdr 和 --sdr 都转发到容器中并产生相同的输出决策(速度较慢,因为容器回退到软件 WebGL 进行 SDR DOM 捕获)。请参阅 HDR 渲染 了解完整的源要求和验证步骤。时间轴键与 data-composition-id 不匹配
时间轴键与 data-composition-id 不匹配
症状: 动画不播放。构图看起来是静态的。原因: 之后(固定):
window.__timelines 中使用的密钥必须与组合根元素上的 data-composition-id 属性完全匹配。之前(破损):index.html
index.html
调试清单
当出现问题时,请按以下顺序检查:- 运行 linter:
npx hyperframes lint— 捕获大多数结构问题 - 时间线已注册?
window.__timelines["<id>"]设置了吗?密钥是否匹配data-composition-id? - 仅 GSAP 动画? 仅动画视觉属性(不透明度、变换、颜色) - 请参阅 GSAP 动画
- 时间线足够长? 在末尾添加
tl.set({}, {}, DURATION)— 请参阅时间线持续时间 - 控制台错误? 打开浏览器控制台 — 运行时错误显示为
[Browser:ERROR] - 仍然卡住? 请参阅故障排除 了解环境和渲染问题
下一步
故障排除
修复环境和渲染问题
GSAP动画
查看动画规则和模式
HTML 架构参考
完整属性参考和清单
数据属性
时间、媒体和构图属性