用途:当用户想把一段视频做成苹果风格的滚动动画网站、滚动控制的视频网页、把产品视频变成电影感落地页,或把视频转成优化的图片帧序列用于滚动动画时使用该技能。不适合普通自动播放视频背景或无关滚动效果。页面本身提供滚动距离,固定画布填满视口并刮擦由用户视频导出的帧序列,动画即界面。
主要能力与用法:两种模式——从视频构建,或优化已有帧序列。构建写法为 $scroll-video-website <视频路径>,路径须紧跟技能名,其后可写样式、布局、文案等可选指示;optimize 模式写作 $scroll-video-website optimize,不带其他参数。路径默认相对当前工作目录,含空格需加引号;先查精确路径,找不到则在项目内搜同名文件并排除依赖、构建、缓存和版本控制目录,唯一匹配可继续,无匹配或匹配多个须询问。
构建流程要点:先检查项目结构与现有技术栈,沿用可用的栈而不重建;用 ffprobe 查看视频尺寸、时长、帧率、帧数和大小;默认用 ffmpeg 抽取零填充命名的 WebP 帧序列,如 frames/frame_0001.webp,最多保留 30fps,长片段采样到约 240–300 帧,保持宽高比,WebP 质量约 78–82 并检查结果;记录实际帧数。仅在无法抽帧或帧负载不合适时才回退到暂停视频定位,并说明取舍。默认产出仅画布的页面:白色页面与固定 100vw×100vh 舞台,文档高度约 400vh,无导航、卡片、标题、行动号召等,画布按 cover 几何居中绘制,首帧就绪后短暂淡入。滚动进度映射用变量 range 与 progress 及 targetFrame = progress * (frameCount - 1);滚动与缩放仅更新低成本测量,单一 requestAnimationFrame 循环用与帧率无关的指数插值平滑播放头,并交叉淡入小数余量;渐进加载先加载第 1 帧,再按时间轴均匀加载(如每第 8 帧),最后加载其余帧。
限制与注意:需检查 prefers-reduced-motion,该模式下停止刮擦并保持合适首帧;组件卸载时清理监听与动画帧;须验证首尾滚动对应首尾帧、双向连续、无重复请求、缺帧用邻近已加载帧回退、DPR 缩放与移动端裁切正常。详细参考 optimize.md。