Communitygithub.com

影视级摄像机

基于 Remotion 的连续场景摄像机系统,包含强制前置检查、已核准参考审查、反霓虹规则以及首轮质量把控。

影视级摄像机 是什么?

这是一个基于 Remotion 框架的摄像机技能,旨在构建一个连贯的共享世界,通过一台虚拟摄像机在场景中连续移动,替代传统视频编辑中独立面板在空白空间中弹出的效果。该技能严格遵循一套强制性前置检查流程:必须先确认格式(4:3 半屏 Instagram 嵌入或 9:16 全屏 Instagram)和背景(暖光、洁净暗色、浅色网格或深色网格),随后必须审查该项目的已核准渲染参考(优先从同一视频或产品线获取),并遵守绝对的视觉禁令——禁止任何霓虹、发光、渐变、玻璃拟态或赛博朋克灯光效果。摄像机动画采用单个共享关键帧时间线,控制焦点和平移/缩放,并遵循固定的编排节奏:紧贴动作开场、保持、揭示环境、转移到对比/收获点、然后平稳结束。该技能与 `remotion-best-practices` 和 `motion-graphics` 配合使用,在 Cluade Code、Cursor 或 Codex 等 AI 编码代理中作为开发指南运行,确保生成的视频片段符合品牌视觉系统,并通过严格的自我审查门控(首轮拒绝门控)才能交付最终 MP4 文件。

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/SonuSV7719/ai-video-studio/tree/master/skills/cinematic-camera

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

影视级摄像机 是做什么的?

与 remotion-best-practices 和 motion-graphics 配合使用。构建一个连贯的世界,让一台共享摄像机在其中移动,而不是将孤立的弹出面板放入虚空。

强制前置检查

在开始计划或编码之前,请遵循 motion-graphics 的前置检查门控。如果缺失,请询问:

您想要哪种格式:4:3 半屏 Instagram 嵌入 还是 9:16 全屏 Instagram?以及哪种背景:暖光、洁净暗色、浅色网格 或 深色网格?

不要默默地默认选择 9:16 或暗色。如果用户将选择权委托给您,请使用暖光。

绝对视觉禁令

本技能绝不引入:霓虹、发光、光晕、发光的边缘、彩色阴影、渐变球体、径向色彩渐变、青紫渐变、玻璃拟态 或 赛博朋克灯光。摄像机移动不能将一个克制的场景变成由编码美学演示的 AI 氛围。产品点缀保持平面和克制。

强制已核准参考审查门控

在计划或编码之前完成:

  1. 检查最新 3-5 个与同一项目、产品、宽高比、放置位置或视觉机制相关的已核准渲染。
  2. 打开源构图,检查摄像机关键帧、时间、间距、排版、颜色、密度、进入、退出和结束停顿。
  3. 检查实际剪辑或代表性帧;仅文件名是不够的。
  4. 盘点真实资产:徽标、吉祥物、截图、录制、素材和先前输出。
  5. 编写一个简短的行板图,解释该剪辑如何延续已核准的系统。
  6. 如果不存在项目参考,则使用锁定后备方案:暖白色实体/编辑性世界、深色油墨、柔和中性色、一个克制的平面品牌点缀、中性阴影以及零装饰性效果。

参考优先级:同一视频 → 同一产品/系列 → 同一宽高比/使用场景 → 其他已核准仓库示例 → 锁定后备方案。

规范图库:https://github.com/Liamrjohnston/remotion-motion-graphics-skill

最新的已核准作品是基线,而非可选的灵感来源。不要为了新奇而发明新的美学风格。

核心理念

构建一个比视口更大的世界。在动作上紧密开场,在其完成时保持,揭示上下文,移动到对比/收获点,然后稳定下来。

面板可以存在,但它们必须共享一个世界并具有有意义的空间关系。避免孤立的卡片在空白空间中独立出现。

摄像机云台

使用单个共享关键帧时间线来控制焦点和缩放:

const ease = Easing.inOut(Easing.cubic);
const KEY_T = [0, 46, 62, 78, 96, 132, 174, TOTAL_FRAMES];

const fx = interpolate(frame, KEY_T, [/* 焦点 x */], {
  easing: ease,
  extrapolateLeft: 'clamp',
  extrapolateRight: 'clamp',
});
const fy = interpolate(frame, KEY_T, [/* 焦点 y */], {
  easing: ease,
  extrapolateLeft: 'clamp',
  extrapolateRight: 'clamp',
});
const z = interpolate(frame, KEY_T, [/* 缩放 */], {
  easing: ease,
  extrapolateLeft: 'clamp',
  extrapolateRight: 'clamp',
});

<AbsoluteFill style={{backgroundColor: BG}}>
  <div
    style={{
      position: 'absolute',
      transform: `translate(${VIEW_W / 2 - fx}px, ${VIEW_H / 2 - fy}px) scale(${z})`,
      transformOrigin: `${fx}px ${fy}px`,
    }}
  >
    {/* 整个世界坐标中的场景 */}
  </div>
</AbsoluteFill>
  • 尺寸来自已确认的格式,而不是隐藏的默认值。
  • 世界宽度通常是视口宽度的 2-2.5 倍。
  • 重复的相邻关键帧创建停顿。
  • 摄像机移动通常需要 14-24 帧。
  • 以两个几乎相同的关键帧结束,以实现稳定的编辑器停顿。
  • 摄像机、光标、效果和连接的对象保持在一个坐标系中。

编排

  1. 在已经移动的动作上紧密开场。
  2. 在主动作完成时保持。
  3. 揭示其更大的系统。
  4. 移动到对比/收获点。
  5. 拉出镜头,同时支持对象以交错序列完成。
  6. 稳定下来,以便干净地剪切。

规则:

  • 摄像机移至下一个动作;动作在停顿期间完成。
  • 每个节拍一个主动作。
  • 仅使用微动来表示状态:打字、滴答、检查、播放、进度、光标移动。
  • 优先使用连续变换而非场景替换。
  • 优先使用平滑移动而非急促甩动。
  • 运动解释因果关系;它从不弥补薄弱的概念。

真实性和文本

  • 尽可能使用真实的徽标、素材、截图、录制、UI 和已验证的数据。
  • 绝不使用通用彩色方块、虚假标记、虚构的 UI 或虚假的指标。
  • 产品名称、文件名、计数器、命令、进度和真实的 UI 文本是允许的。
  • 不要重复叙述的句子或添加说明性徽章,因为画面感觉空旷。

首轮拒绝门控

在准备好之前,不要展示渲染结果,直到每个答案都是“否”:

  1. 格式或背景是否未经确认?
  2. 是否有任何霓虹、发光、彩色灯光、渐变冲刷、玻璃面板或 AI 氛围编码式处理?
  3. 场景是否是虚空中的一组孤立的通用卡片?
  4. 是否在没有用户选择或已核准参考要求的情况下使用了暗色?
  5. 摄像机移动是否是在装饰而非引导因果关系?
  6. 当可获取时,是否缺少真实资产?
  7. 在选定的 Instagram 放置位置中,关键元素是否不可读?
  8. 结果是否无法匹配已核准参考的间距、密度、材质和运动节奏?

私下修改,直到通过门控。

质量保证和交付

  1. 为开场、每个摄像机的目标位置、过渡、收获点和结束停顿渲染静止帧。
  2. 与已核准参考比较构图、密度、身份、材质克制和精致度。
  3. 验证真实资产保持可读性。
  4. 验证 保持→移动→保持 且没有动作在移动过程中被隐藏。
  5. 检查完整 MP4 中是否有空白移动、裁剪、死帧、通用填充、霓虹/发光和弱的结束停顿。
  6. 仅当其看起来与相同的已核准视觉系统一致时才交付。

技术约束

  • 使用 useCurrentFrame()、spring() 和 interpolate() 驱动运动;不使用 CSS 动画。
  • interpolate() 的输入范围必须严格递增。
  • 保持世界适中;大型模糊/阴影层代价高昂且通常违反视觉规则。
  • 对滴答数据使用表格数字。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

SonuSV7719/earshot

Listen with earshot whenever you must judge, choose, trim, verify or compare sound you cannot hear - picking a sound effect, music or ambience from candidates, finding the cleanest moment in a recording, checking whether audio reads as a real recording or as code-synthesized, reviewing a soundtrack or a video's audio (what happens when, sync to picture, loudness, mix), A/B-ing a mix change, making a sound in code and improving it by listening (earshot forge), or giving a code-made film its sound effects from the shipped bank (earshot sfx / kit). Use it before telling anyone how audio sounds.

SonuSV7719/real-sound

Build premium, realistic soundtracks for code-made videos and animations from real licensed recordings - launch films, product and feature videos, UI walkthroughs, logo stings, explainers, trailers and animated shorts made with Remotion, HyperFrames, three.js, GSAP or any renderer. Use this whenever a video or animation needs sound design, SFX, foley, ambience, music, a soundtrack, a score, UI click / whoosh / riser / impact / logo-sting sounds, or a music edit to picture; whenever a synthesized or "random" sounding soundtrack must be replaced with real recordings; or when the user asks to source, license, credit, mix, master, critique or mux audio for a film. It covers cue lists from the picture, sourcing from Freesound / Mixkit / composer libraries with licence checks, a music edit at bar lines, a JSON sound design rendered by a deterministic mixer, measured QA (clicks, masking, harshness, sync, loudness) plus earshot listening, a multi-agent critique, mastering, credits and the mux.

相关技能