[{"data":1,"prerenderedAt":2073},["ShallowReactive",2],{"navigation":3,"\u002Fdeploy\u002Faws-lambda":686,"\u002Fdeploy\u002Faws-lambda-surround":2068},[4,31,57,147,168,198,652],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":30},"快速入门","i-lucide-rocket","\u002Fgetting-started","01.getting-started",[10,14,18,22,26],{"title":11,"path":12,"stem":13},"简介","\u002Fgetting-started\u002Fintroduction","01.getting-started\u002F01.introduction",{"title":15,"path":16,"stem":17},"快速开始","\u002Fgetting-started\u002Fquickstart","01.getting-started\u002F02.quickstart",{"title":19,"path":20,"stem":21},"展示作品","\u002Fgetting-started\u002Fshowcase","01.getting-started\u002F03.showcase",{"title":23,"path":24,"stem":25},"示例","\u002Fgetting-started\u002Fexamples","01.getting-started\u002F04.examples",{"title":27,"path":28,"stem":29},"发布视频","\u002Fgetting-started\u002Flaunch-videos","01.getting-started\u002F05.launch-videos",false,{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":30},"核心概念","i-lucide-lightbulb","\u002Fconcepts","02.concepts",[37,41,45,49,53],{"title":38,"path":39,"stem":40},"合成","\u002Fconcepts\u002Fcompositions","02.concepts\u002F01.compositions",{"title":42,"path":43,"stem":44},"数据属性","\u002Fconcepts\u002Fdata-attributes","02.concepts\u002F02.data-attributes",{"title":46,"path":47,"stem":48},"变量","\u002Fconcepts\u002Fvariables","02.concepts\u002F03.variables",{"title":50,"path":51,"stem":52},"帧适配器","\u002Fconcepts\u002Fframe-adapters","02.concepts\u002F04.frame-adapters",{"title":54,"path":55,"stem":56},"确定性渲染","\u002Fconcepts\u002Fdeterminism","02.concepts\u002F05.determinism",{"title":58,"icon":59,"path":60,"stem":61,"children":62,"page":30},"使用指南","i-lucide-compass","\u002Fguides","03.guides",[63,67,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143],{"title":64,"path":65,"stem":66},"工作流水线","\u002Fguides\u002Fpipeline","03.guides\u002F01.pipeline",{"title":68,"path":69,"stem":70},"HTML-in-Canvas","\u002Fguides\u002Fhtml-in-canvas","03.guides\u002F02.html-in-canvas",{"title":72,"path":73,"stem":74},"网站转视频","\u002Fguides\u002Fwebsite-to-video","03.guides\u002F03.website-to-video",{"title":76,"path":77,"stem":78},"Google Antigravity","\u002Fguides\u002Fantigravity","03.guides\u002F04.antigravity",{"title":80,"path":81,"stem":82},"GitHub Copilot CLI","\u002Fguides\u002Fcopilot-cli","03.guides\u002F05.copilot-cli",{"title":84,"path":85,"stem":86},"Claude Design","\u002Fguides\u002Fclaude-design","03.guides\u002F06.claude-design",{"title":88,"path":89,"stem":90},"Open Design","\u002Fguides\u002Fopen-design","03.guides\u002F07.open-design",{"title":92,"path":93,"stem":94},"提示词指南","\u002Fguides\u002Fprompting","03.guides\u002F08.prompting",{"title":96,"path":97,"stem":98},"Hyperframes vs Remotion","\u002Fguides\u002Fhyperframes-vs-remotion","03.guides\u002F09.hyperframes-vs-remotion",{"title":100,"path":101,"stem":102},"GSAP 动画","\u002Fguides\u002Fgsap-animation","03.guides\u002F10.gsap-animation",{"title":104,"path":105,"stem":106},"渲染","\u002Fguides\u002Frendering","03.guides\u002F11.rendering",{"title":108,"path":109,"stem":110},"去除背景（透明视频）","\u002Fguides\u002Fremove-background","03.guides\u002F12.remove-background",{"title":112,"path":113,"stem":114},"HDR 渲染","\u002Fguides\u002Fhdr","03.guides\u002F13.hdr",{"title":116,"path":117,"stem":118},"4K 渲染","\u002Fguides\u002F4k-rendering","03.guides\u002F14.4k-rendering",{"title":120,"path":121,"stem":122},"性能","\u002Fguides\u002Fperformance","03.guides\u002F15.performance",{"title":124,"path":125,"stem":126},"时间轴编辑","\u002Fguides\u002Ftimeline-editing","03.guides\u002F16.timeline-editing",{"title":128,"path":129,"stem":130},"视频编辑者速查表","\u002Fguides\u002Fvideo-editor-cheatsheet","03.guides\u002F17.video-editor-cheatsheet",{"title":132,"path":133,"stem":134},"常见错误","\u002Fguides\u002Fcommon-mistakes","03.guides\u002F18.common-mistakes",{"title":136,"path":137,"stem":138},"故障排除","\u002Fguides\u002Ftroubleshooting","03.guides\u002F19.troubleshooting",{"title":140,"path":141,"stem":142},"反馈收集","\u002Fguides\u002Ffeedback","03.guides\u002F20.feedback",{"title":144,"path":145,"stem":146},"HyperFrames MCP","\u002Fguides\u002Fmcp","03.guides\u002F21.mcp",{"title":148,"icon":149,"path":150,"stem":151,"children":152,"page":30},"部署","i-lucide-cloud","\u002Fdeploy","04.deploy",[153,156,160,164],{"title":148,"path":154,"stem":155},"\u002Fdeploy\u002Fdeploy","04.deploy\u002F01.deploy",{"title":157,"path":158,"stem":159},"AWS Lambda","\u002Fdeploy\u002Faws-lambda","04.deploy\u002F02.aws-lambda",{"title":161,"path":162,"stem":163},"Lambda 上的模板","\u002Fdeploy\u002Ftemplates-on-lambda","04.deploy\u002F03.templates-on-lambda",{"title":165,"path":166,"stem":167},"迁移到 HyperFrames Lambda","\u002Fdeploy\u002Fmigrating-to-hyperframes-lambda","04.deploy\u002F04.migrating-to-hyperframes-lambda",{"title":169,"icon":170,"path":171,"stem":172,"children":173,"page":30},"包","i-lucide-package","\u002Fpackages","05.packages",[174,178,182,186,190,194],{"title":175,"path":176,"stem":177},"@hyperframes\u002Fcore","\u002Fpackages\u002Fcore","05.packages\u002F01.core",{"title":179,"path":180,"stem":181},"@hyperframes\u002Fengine","\u002Fpackages\u002Fengine","05.packages\u002F02.engine",{"title":183,"path":184,"stem":185},"@hyperframes\u002Fplayer","\u002Fpackages\u002Fplayer","05.packages\u002F03.player",{"title":187,"path":188,"stem":189},"@hyperframes\u002Fproducer","\u002Fpackages\u002Fproducer","05.packages\u002F04.producer",{"title":191,"path":192,"stem":193},"@hyperframes\u002Fstudio","\u002Fpackages\u002Fstudio","05.packages\u002F05.studio",{"title":195,"path":196,"stem":197},"CLI","\u002Fpackages\u002Fcli","05.packages\u002F06.cli",{"title":199,"icon":200,"path":201,"stem":202,"children":203,"page":30},"组件目录","i-lucide-layout-grid","\u002Fcatalog","06.catalog",[204,270,324,358,420,478,512,546,584,598],{"title":205,"icon":206,"path":207,"stem":208,"children":209,"page":30},"字幕","i-lucide-captions","\u002Fcatalog\u002Fcaption","06.catalog\u002F01.caption",[210,214,218,222,226,230,234,238,242,246,250,254,258,262,266],{"title":211,"path":212,"stem":213},"裁剪擦除","\u002Fcatalog\u002Fcaption\u002Fcaption-clip-wipe","06.catalog\u002F01.caption\u002F01.caption-clip-wipe",{"title":215,"path":216,"stem":217},"编辑强调","\u002Fcatalog\u002Fcaption\u002Fcaption-editorial-emphasis","06.catalog\u002F01.caption\u002F02.caption-editorial-emphasis",{"title":219,"path":220,"stem":221},"Emoji 弹出","\u002Fcatalog\u002Fcaption\u002Fcaption-emoji-pop","06.catalog\u002F01.caption\u002F03.caption-emoji-pop",{"title":223,"path":224,"stem":225},"故障 RGB","\u002Fcatalog\u002Fcaption\u002Fcaption-glitch-rgb","06.catalog\u002F01.caption\u002F04.caption-glitch-rgb",{"title":227,"path":228,"stem":229},"渐变填充","\u002Fcatalog\u002Fcaption\u002Fcaption-gradient-fill","06.catalog\u002F01.caption\u002F05.caption-gradient-fill",{"title":231,"path":232,"stem":233},"高亮","\u002Fcatalog\u002Fcaption\u002Fcaption-highlight","06.catalog\u002F01.caption\u002F06.caption-highlight",{"title":235,"path":236,"stem":237},"动感冲击","\u002Fcatalog\u002Fcaption\u002Fcaption-kinetic-slam","06.catalog\u002F01.caption\u002F07.caption-kinetic-slam",{"title":239,"path":240,"stem":241},"矩阵解码","\u002Fcatalog\u002Fcaption\u002Fcaption-matrix-decode","06.catalog\u002F01.caption\u002F08.caption-matrix-decode",{"title":243,"path":244,"stem":245},"霓虹强调","\u002Fcatalog\u002Fcaption\u002Fcaption-neon-accent","06.catalog\u002F01.caption\u002F09.caption-neon-accent",{"title":247,"path":248,"stem":249},"霓虹发光","\u002Fcatalog\u002Fcaption\u002Fcaption-neon-glow","06.catalog\u002F01.caption\u002F10.caption-neon-glow",{"title":251,"path":252,"stem":253},"视差图层","\u002Fcatalog\u002Fcaption\u002Fcaption-parallax-layers","06.catalog\u002F01.caption\u002F11.caption-parallax-layers",{"title":255,"path":256,"stem":257},"粒子爆发","\u002Fcatalog\u002Fcaption\u002Fcaption-particle-burst","06.catalog\u002F01.caption\u002F12.caption-particle-burst",{"title":259,"path":260,"stem":261},"胶囊卡拉OK","\u002Fcatalog\u002Fcaption\u002Fcaption-pill-karaoke","06.catalog\u002F01.caption\u002F13.caption-pill-karaoke",{"title":263,"path":264,"stem":265},"纹理","\u002Fcatalog\u002Fcaption\u002Fcaption-texture","06.catalog\u002F01.caption\u002F14.caption-texture",{"title":267,"path":268,"stem":269},"字重切换","\u002Fcatalog\u002Fcaption\u002Fcaption-weight-shift","06.catalog\u002F01.caption\u002F15.caption-weight-shift",{"title":271,"icon":272,"path":273,"stem":274,"children":275,"page":30},"HTML 画布","i-lucide-layout-dashboard","\u002Fcatalog\u002Fhtml-canvas","06.catalog\u002F02.html-canvas",[276,280,284,288,292,296,300,304,308,312,316,320],{"title":277,"path":278,"stem":279},"iOS 26 Liquid Glass 主屏幕","\u002Fcatalog\u002Fhtml-canvas\u002Fios26-liquid-glass","06.catalog\u002F02.html-canvas\u002F01.ios26-liquid-glass",{"title":281,"path":282,"stem":283},"Liquid Glass 右键菜单","\u002Fcatalog\u002Fhtml-canvas\u002Fliquid-glass-context-menu","06.catalog\u002F02.html-canvas\u002F02.liquid-glass-context-menu",{"title":285,"path":286,"stem":287},"Liquid Glass 媒体控制","\u002Fcatalog\u002Fhtml-canvas\u002Fliquid-glass-media-controls","06.catalog\u002F02.html-canvas\u002F03.liquid-glass-media-controls",{"title":289,"path":290,"stem":291},"Liquid Glass 通知","\u002Fcatalog\u002Fhtml-canvas\u002Fliquid-glass-notification","06.catalog\u002F02.html-canvas\u002F04.liquid-glass-notification",{"title":293,"path":294,"stem":295},"Liquid Glass 小组件","\u002Fcatalog\u002Fhtml-canvas\u002Fliquid-glass-widgets","06.catalog\u002F02.html-canvas\u002F05.liquid-glass-widgets",{"title":297,"path":298,"stem":299},"macOS Tahoe Liquid Glass 桌面","\u002Fcatalog\u002Fhtml-canvas\u002Fmacos-tahoe-liquid-glass","06.catalog\u002F02.html-canvas\u002F06.macos-tahoe-liquid-glass",{"title":301,"path":302,"stem":303},"iPhone & MacBook 3D 展示","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-iphone-device","06.catalog\u002F02.html-canvas\u002F07.vfx-iphone-device",{"title":305,"path":306,"stem":307},"液态背景","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-liquid-background","06.catalog\u002F02.html-canvas\u002F08.vfx-liquid-background",{"title":309,"path":310,"stem":311},"磁力效果","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-magnetic","06.catalog\u002F02.html-canvas\u002F09.vfx-magnetic",{"title":313,"path":314,"stem":315},"传送门","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-portal","06.catalog\u002F02.html-canvas\u002F10.vfx-portal",{"title":317,"path":318,"stem":319},"碎裂效果","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-shatter","06.catalog\u002F02.html-canvas\u002F11.vfx-shatter",{"title":321,"path":322,"stem":323},"VFX 文字光标","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-text-cursor","06.catalog\u002F02.html-canvas\u002F12.vfx-text-cursor",{"title":325,"icon":326,"path":327,"stem":328,"children":329,"page":30},"社交叠加层","i-lucide-share-2","\u002Fcatalog\u002Fsocial-overlays","06.catalog\u002F03.social-overlays",[330,334,338,342,346,350,354],{"title":331,"path":332,"stem":333},"Instagram 关注","\u002Fcatalog\u002Fsocial-overlays\u002Finstagram-follow","06.catalog\u002F03.social-overlays\u002F01.instagram-follow",{"title":335,"path":336,"stem":337},"macOS 通知","\u002Fcatalog\u002Fsocial-overlays\u002Fmacos-notification","06.catalog\u002F03.social-overlays\u002F02.macos-notification",{"title":339,"path":340,"stem":341},"Reddit 帖子卡片","\u002Fcatalog\u002Fsocial-overlays\u002Freddit-post","06.catalog\u002F03.social-overlays\u002F03.reddit-post",{"title":343,"path":344,"stem":345},"Spotify 正在播放","\u002Fcatalog\u002Fsocial-overlays\u002Fspotify-card","06.catalog\u002F03.social-overlays\u002F04.spotify-card",{"title":347,"path":348,"stem":349},"TikTok 关注","\u002Fcatalog\u002Fsocial-overlays\u002Ftiktok-follow","06.catalog\u002F03.social-overlays\u002F05.tiktok-follow",{"title":351,"path":352,"stem":353},"X 帖子卡片","\u002Fcatalog\u002Fsocial-overlays\u002Fx-post","06.catalog\u002F03.social-overlays\u002F06.x-post",{"title":355,"path":356,"stem":357},"YouTube 下方三分之一","\u002Fcatalog\u002Fsocial-overlays\u002Fyt-lower-third","06.catalog\u002F03.social-overlays\u002F07.yt-lower-third",{"title":359,"icon":360,"path":361,"stem":362,"children":363,"page":30},"着色器过渡","i-lucide-wand-2","\u002Fcatalog\u002Fshader-transitions","06.catalog\u002F04.shader-transitions",[364,368,372,376,380,384,388,392,396,400,404,408,412,416],{"title":365,"path":366,"stem":367},"色散径向分裂","\u002Fcatalog\u002Fshader-transitions\u002Fchromatic-radial-split","06.catalog\u002F04.shader-transitions\u002F01.chromatic-radial-split",{"title":369,"path":370,"stem":371},"电影感变焦","\u002Fcatalog\u002Fshader-transitions\u002Fcinematic-zoom","06.catalog\u002F04.shader-transitions\u002F02.cinematic-zoom",{"title":373,"path":374,"stem":375},"交叉扭曲变形","\u002Fcatalog\u002Fshader-transitions\u002Fcross-warp-morph","06.catalog\u002F04.shader-transitions\u002F03.cross-warp-morph",{"title":377,"path":378,"stem":379},"域扭曲溶解","\u002Fcatalog\u002Fshader-transitions\u002Fdomain-warp-dissolve","06.catalog\u002F04.shader-transitions\u002F04.domain-warp-dissolve",{"title":381,"path":382,"stem":383},"白色闪光过渡","\u002Fcatalog\u002Fshader-transitions\u002Fflash-through-white","06.catalog\u002F04.shader-transitions\u002F05.flash-through-white",{"title":385,"path":386,"stem":387},"故障效果","\u002Fcatalog\u002Fshader-transitions\u002Fglitch","06.catalog\u002F04.shader-transitions\u002F06.glitch",{"title":389,"path":390,"stem":391},"引力透镜","\u002Fcatalog\u002Fshader-transitions\u002Fgravitational-lens","06.catalog\u002F04.shader-transitions\u002F07.gravitational-lens",{"title":393,"path":394,"stem":395},"光线泄漏","\u002Fcatalog\u002Fshader-transitions\u002Flight-leak","06.catalog\u002F04.shader-transitions\u002F08.light-leak",{"title":397,"path":398,"stem":399},"褶皱燃烧","\u002Fcatalog\u002Fshader-transitions\u002Fridged-burn","06.catalog\u002F04.shader-transitions\u002F09.ridged-burn",{"title":401,"path":402,"stem":403},"涟漪波纹","\u002Fcatalog\u002Fshader-transitions\u002Fripple-waves","06.catalog\u002F04.shader-transitions\u002F10.ripple-waves",{"title":405,"path":406,"stem":407},"SDF 光圈","\u002Fcatalog\u002Fshader-transitions\u002Fsdf-iris","06.catalog\u002F04.shader-transitions\u002F11.sdf-iris",{"title":409,"path":410,"stem":411},"漩涡涡流","\u002Fcatalog\u002Fshader-transitions\u002Fswirl-vortex","06.catalog\u002F04.shader-transitions\u002F12.swirl-vortex",{"title":413,"path":414,"stem":415},"热浪扭曲","\u002Fcatalog\u002Fshader-transitions\u002Fthermal-distortion","06.catalog\u002F04.shader-transitions\u002F13.thermal-distortion",{"title":417,"path":418,"stem":419},"快速摇摄","\u002Fcatalog\u002Fshader-transitions\u002Fwhip-pan","06.catalog\u002F04.shader-transitions\u002F14.whip-pan",{"title":421,"icon":422,"path":423,"stem":424,"children":425,"page":30},"CSS 过渡","i-lucide-repeat","\u002Fcatalog\u002Fcss-transitions","06.catalog\u002F05.css-transitions",[426,430,434,438,442,446,450,454,458,462,466,470,474],{"title":427,"path":428,"stem":429},"3D 过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-3d","06.catalog\u002F05.css-transitions\u002F01.transitions-3d",{"title":431,"path":432,"stem":433},"模糊过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-blur","06.catalog\u002F05.css-transitions\u002F02.transitions-blur",{"title":435,"path":436,"stem":437},"覆盖过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-cover","06.catalog\u002F05.css-transitions\u002F03.transitions-cover",{"title":439,"path":440,"stem":441},"破碎过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-destruction","06.catalog\u002F05.css-transitions\u002F04.transitions-destruction",{"title":443,"path":444,"stem":445},"溶解过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-dissolve","06.catalog\u002F05.css-transitions\u002F05.transitions-dissolve",{"title":447,"path":448,"stem":449},"扭曲过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-distortion","06.catalog\u002F05.css-transitions\u002F06.transitions-distortion",{"title":451,"path":452,"stem":453},"网格过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-grid","06.catalog\u002F05.css-transitions\u002F07.transitions-grid",{"title":455,"path":456,"stem":457},"光效过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-light","06.catalog\u002F05.css-transitions\u002F08.transitions-light",{"title":459,"path":460,"stem":461},"机械过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-mechanical","06.catalog\u002F05.css-transitions\u002F09.transitions-mechanical",{"title":463,"path":464,"stem":465},"其他过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-other","06.catalog\u002F05.css-transitions\u002F10.transitions-other",{"title":467,"path":468,"stem":469},"推移过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-push","06.catalog\u002F05.css-transitions\u002F11.transitions-push",{"title":471,"path":472,"stem":473},"径向过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-radial","06.catalog\u002F05.css-transitions\u002F12.transitions-radial",{"title":475,"path":476,"stem":477},"缩放过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-scale","06.catalog\u002F05.css-transitions\u002F13.transitions-scale",{"title":479,"icon":480,"path":481,"stem":482,"children":483,"page":30},"展示","i-lucide-monitor-play","\u002Fcatalog\u002Fshowcase","06.catalog\u002F06.showcase",[484,488,492,496,500,504,508],{"title":485,"path":486,"stem":487},"应用展示","\u002Fcatalog\u002Fshowcase\u002Fapp-showcase","06.catalog\u002F06.showcase\u002F01.app-showcase",{"title":489,"path":490,"stem":491},"Apple 金额计数器","\u002Fcatalog\u002Fshowcase\u002Fapple-money-count","06.catalog\u002F06.showcase\u002F02.apple-money-count",{"title":493,"path":494,"stem":495},"蓝色毛衣开场视频","\u002Fcatalog\u002Fshowcase\u002Fblue-sweater-intro-video","06.catalog\u002F06.showcase\u002F03.blue-sweater-intro-video",{"title":497,"path":498,"stem":499},"朝鲜封锁","\u002Fcatalog\u002Fshowcase\u002Fnorth-korea-locked-down","06.catalog\u002F06.showcase\u002F04.north-korea-locked-down",{"title":501,"path":502,"stem":503},"纽约巴黎航班","\u002Fcatalog\u002Fshowcase\u002Fnyc-paris-flight","06.catalog\u002F06.showcase\u002F05.nyc-paris-flight",{"title":505,"path":506,"stem":507},"3D UI 展示","\u002Fcatalog\u002Fshowcase\u002Fui-3d-reveal","06.catalog\u002F06.showcase\u002F06.ui-3d-reveal",{"title":509,"path":510,"stem":511},"VPN YouTube 广告片段","\u002Fcatalog\u002Fshowcase\u002Fvpn-youtube-spot","06.catalog\u002F06.showcase\u002F07.vpn-youtube-spot",{"title":513,"icon":514,"path":515,"stem":516,"children":517,"page":30},"数据","i-lucide-bar-chart-3","\u002Fcatalog\u002Fdata","06.catalog\u002F07.data",[518,522,526,530,534,538,542],{"title":519,"path":520,"stem":521},"数据图表","\u002Fcatalog\u002Fdata\u002Fdata-chart","06.catalog\u002F07.data\u002F01.data-chart",{"title":523,"path":524,"stem":525},"西班牙地图","\u002Fcatalog\u002Fdata\u002Fspain-map","06.catalog\u002F07.data\u002F02.spain-map",{"title":527,"path":528,"stem":529},"美国地图","\u002Fcatalog\u002Fdata\u002Fus-map","06.catalog\u002F07.data\u002F03.us-map",{"title":531,"path":532,"stem":533},"美国气泡地图","\u002Fcatalog\u002Fdata\u002Fus-map-bubble","06.catalog\u002F07.data\u002F04.us-map-bubble",{"title":535,"path":536,"stem":537},"美国流动地图","\u002Fcatalog\u002Fdata\u002Fus-map-flow","06.catalog\u002F07.data\u002F05.us-map-flow",{"title":539,"path":540,"stem":541},"美国六边形网格地图","\u002Fcatalog\u002Fdata\u002Fus-map-hex","06.catalog\u002F07.data\u002F06.us-map-hex",{"title":543,"path":544,"stem":545},"世界地图","\u002Fcatalog\u002Fdata\u002Fworld-map","06.catalog\u002F07.data\u002F07.world-map",{"title":547,"icon":548,"path":549,"stem":550,"children":551,"page":30},"效果","i-lucide-sparkles","\u002Fcatalog\u002Feffects","06.catalog\u002F08.effects",[552,556,560,564,568,572,576,580],{"title":553,"path":554,"stem":555},"差值混合","\u002Fcatalog\u002Feffects\u002Fcaption-blend-difference","06.catalog\u002F08.effects\u002F01.caption-blend-difference",{"title":557,"path":558,"stem":559},"胶片颗粒叠加","\u002Fcatalog\u002Feffects\u002Fgrain-overlay","06.catalog\u002F08.effects\u002F02.grain-overlay",{"title":561,"path":562,"stem":563},"网格像素化擦除","\u002Fcatalog\u002Feffects\u002Fgrid-pixelate-wipe","06.catalog\u002F08.effects\u002F03.grid-pixelate-wipe",{"title":565,"path":566,"stem":567},"视差缩小","\u002Fcatalog\u002Feffects\u002Fparallax-unzoom","06.catalog\u002F08.effects\u002F04.parallax-unzoom",{"title":569,"path":570,"stem":571},"视差放大","\u002Fcatalog\u002Feffects\u002Fparallax-zoom","06.catalog\u002F08.effects\u002F05.parallax-zoom",{"title":573,"path":574,"stem":575},"微光扫过","\u002Fcatalog\u002Feffects\u002Fshimmer-sweep","06.catalog\u002F08.effects\u002F06.shimmer-sweep",{"title":577,"path":578,"stem":579},"纹理遮罩文字","\u002Fcatalog\u002Feffects\u002Ftexture-mask-text","06.catalog\u002F08.effects\u002F07.texture-mask-text",{"title":581,"path":582,"stem":583},"暗角","\u002Fcatalog\u002Feffects\u002Fvignette","06.catalog\u002F08.effects\u002F08.vignette",{"title":585,"icon":586,"path":587,"stem":588,"children":589,"page":30},"区块","i-lucide-box","\u002Fcatalog\u002Fblocks","06.catalog\u002F09.blocks",[590,594],{"title":591,"path":592,"stem":593},"流程图","\u002Fcatalog\u002Fblocks\u002Fflowchart","06.catalog\u002F09.blocks\u002F01.flowchart",{"title":595,"path":596,"stem":597},"Logo 片尾","\u002Fcatalog\u002Fblocks\u002Flogo-outro","06.catalog\u002F09.blocks\u002F02.logo-outro",{"title":599,"icon":600,"path":601,"stem":602,"children":603,"page":30},"代码片段","i-lucide-code-2","\u002Fcatalog\u002Fcode-snippets","06.catalog\u002F10.code-snippets",[604,608,612,616,620,624,628,632,636,640,644,648],{"title":605,"path":606,"stem":607},"Dark 2026","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-dark-2026","06.catalog\u002F10.code-snippets\u002F01.code-snippet-dark-2026",{"title":609,"path":610,"stem":611},"Dark Modern","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-dark-modern","06.catalog\u002F10.code-snippets\u002F02.code-snippet-dark-modern",{"title":613,"path":614,"stem":615},"Dark+","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-dark-plus","06.catalog\u002F10.code-snippets\u002F03.code-snippet-dark-plus",{"title":617,"path":618,"stem":619},"High Contrast","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-high-contrast","06.catalog\u002F10.code-snippets\u002F04.code-snippet-high-contrast",{"title":621,"path":622,"stem":623},"High Contrast Light","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-high-contrast-light","06.catalog\u002F10.code-snippets\u002F05.code-snippet-high-contrast-light",{"title":625,"path":626,"stem":627},"Light 2026","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-light-2026","06.catalog\u002F10.code-snippets\u002F06.code-snippet-light-2026",{"title":629,"path":630,"stem":631},"Light Modern","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-light-modern","06.catalog\u002F10.code-snippets\u002F07.code-snippet-light-modern",{"title":633,"path":634,"stem":635},"Light+","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-light-plus","06.catalog\u002F10.code-snippets\u002F08.code-snippet-light-plus",{"title":637,"path":638,"stem":639},"Monokai","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-monokai","06.catalog\u002F10.code-snippets\u002F09.code-snippet-monokai",{"title":641,"path":642,"stem":643},"Solarized Light","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-solarized-light","06.catalog\u002F10.code-snippets\u002F10.code-snippet-solarized-light",{"title":645,"path":646,"stem":647},"Visual Studio Dark","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-visual-studio-dark","06.catalog\u002F10.code-snippets\u002F11.code-snippet-visual-studio-dark",{"title":649,"path":650,"stem":651},"Visual Studio Light","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-visual-studio-light","06.catalog\u002F10.code-snippets\u002F12.code-snippet-visual-studio-light",{"title":653,"icon":654,"path":655,"stem":656,"children":657,"page":30},"参考","i-lucide-book-marked","\u002Freference","07.reference",[658,662,666,670,674,678,682],{"title":659,"path":660,"stem":661},"HTML Schema 参考","\u002Freference\u002Fhtml-schema","07.reference\u002F01.html-schema",{"title":663,"path":664,"stem":665},"贡献指南","\u002Freference\u002Fcontributing","07.reference\u002F02.contributing",{"title":667,"path":668,"stem":669},"贡献到 Catalog","\u002Freference\u002Fcatalog","07.reference\u002F03.catalog",{"title":671,"path":672,"stem":673},"发布渠道","\u002Freference\u002Frelease-channels","07.reference\u002F04.release-channels",{"title":675,"path":676,"stem":677},"测试本地 CLI 变更","\u002Freference\u002Ftesting-local-changes","07.reference\u002F05.testing-local-changes",{"title":679,"path":680,"stem":681},"Studio 手动 DOM 编辑","\u002Freference\u002Fstudio-manual-dom-editing","07.reference\u002F06.studio-manual-dom-editing",{"title":683,"path":684,"stem":685},"采用者","\u002Freference\u002Fadopters","07.reference\u002F07.adopters",{"id":687,"title":157,"body":688,"description":2062,"extension":2063,"links":2064,"meta":2065,"navigation":1084,"path":158,"seo":2066,"stem":159,"__hash__":2067},"docs\u002F04.deploy\u002F02.aws-lambda.md",{"type":689,"value":690,"toc":2039},"minimark",[691,695,760,784,788,796,807,810,923,926,935,942,982,993,996,1021,1031,1038,1047,1054,1115,1135,1139,1146,1236,1239,1261,1293,1297,1307,1627,1643,1657,1661,1664,1732,1747,1750,1757,1804,1815,1817,1823,1830,1836,1850,1856,1871,1877,1880,1920,1934,1941,1952,1962,1966,1984,1988,2035],[692,693,694],"p",{},"HyperFrames 提供了原生的 AWS Lambda 部署方案：一个 Lambda 函数作为 Step Functions 标准工作流的前端，将渲染任务分散到多个并行的 chunk worker 上执行，中间产物存储在 S3 中。配置好 AWS 凭证后，端到端只需三条命令。",[696,697,702],"pre",{"className":698,"code":699,"language":700,"meta":701,"style":701},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","hyperframes lambda deploy\nhyperframes lambda render .\u002Fmy-project --width 1920 --height 1080 --wait\nhyperframes lambda destroy\n","bash","",[703,704,705,721,750],"code",{"__ignoreMap":701},[706,707,710,714,718],"span",{"class":708,"line":709},"line",1,[706,711,713],{"class":712},"sBMFI","hyperframes",[706,715,717],{"class":716},"sfazB"," lambda",[706,719,720],{"class":716}," deploy\n",[706,722,724,726,728,731,734,737,741,744,747],{"class":708,"line":723},2,[706,725,713],{"class":712},[706,727,717],{"class":716},[706,729,730],{"class":716}," render",[706,732,733],{"class":716}," .\u002Fmy-project",[706,735,736],{"class":716}," --width",[706,738,740],{"class":739},"sbssI"," 1920",[706,742,743],{"class":716}," --height",[706,745,746],{"class":739}," 1080",[706,748,749],{"class":716}," --wait\n",[706,751,753,755,757],{"class":708,"line":752},3,[706,754,713],{"class":712},[706,756,717],{"class":716},[706,758,759],{"class":716}," destroy\n",[692,761,762,763,767,768,771,772,775,776,779,780,783],{},"带 ",[764,765,766],"a",{"href":47},"variables"," 的模板同样可以在同一个 Lambda 栈上运行——在 composition 上声明 ",[703,769,770],{},"data-composition-variables","，然后每次渲染时通过 ",[703,773,774],{},"--variables"," 传入值，或使用 ",[703,777,778],{},"lambda render-batch"," 进行批量渲染。详情请参阅 ",[764,781,782],{"href":162},"Templates on Lambda"," 指南，了解个性化渲染流程（单次渲染、JSONL 批量渲染、SDK 编程式调用）以及 256 KiB 的 Step Functions 执行输入限制。",[785,786,787],"h2",{"id":787},"架构",[696,789,794],{"className":790,"code":792,"language":793},[791],"language-text","┌──────────────────────────────────────────────────────────────────┐\n│ Step Functions 状态机                                              │\n│   Plan → Map(N) RenderChunk → Assemble                           │\n└──────────────────────────────────────────────────────────────────┘\n│ 根据 event.Action 分发\n▼\n┌──────────────────────────────────────────────────────────────────┐\n│ 单个 Lambda 函数 (packages\u002Faws-lambda\u002Fdist\u002Fhandler.zip)           │\n│   handler.mjs                                                    │\n│     ├─ Action=\"plan\"        → @hyperframes\u002Fproducer\u002Fdistributed  │\n│     ├─ Action=\"renderChunk\" → @hyperframes\u002Fproducer\u002Fdistributed  │\n│     └─ Action=\"assemble\"    → @hyperframes\u002Fproducer\u002Fdistributed  │\n│   bin\u002Fffmpeg                — ffmpeg-static                      │\n│   node_modules\u002F@sparticuz\u002Fchromium\u002F — Lambda 优化的 Chromium      │\n└──────────────────────────────────────────────────────────────────┘\n│ 基于本地路径的纯函数\n▼\n┌──────────────────────────────────────────────────────────────────┐\n│ S3 存储桶 — plan 压缩包 + 每个 chunk 的输出 + 最终 mp4            │\n└──────────────────────────────────────────────────────────────────┘\n","text",[703,795,792],{"__ignoreMap":701},[692,797,798,799,802,803,806],{},"Lambda 处理函数是一个轻量的调度层：解析 Step Functions 事件，从 S3 下载输入到 ",[703,800,801],{},"\u002Ftmp","，调用 ",[703,804,805],{},"@hyperframes\u002Fproducer\u002Fdistributed"," 的开源原语，将输出上传回去，返回一个小型 JSON 结果。所有重活——捕获、编码、音频混音——都在开源原语内部完成。",[785,808,809],{"id":809},"前置条件",[811,812,813,829],"table",{},[814,815,816],"thead",{},[817,818,819,823,826],"tr",{},[820,821,822],"th",{},"工具",[820,824,825],{},"用途",[820,827,828],{},"安装方式",[830,831,832,852,879,903],"tbody",{},[817,833,834,838,841],{},[835,836,837],"td",{},"AWS 凭证",[835,839,840],{},"CLI 和部署步骤都需要调用 AWS API。",[835,842,843,844,847,848,851],{},"环境变量、",[703,845,846],{},"~\u002F.aws\u002Fcredentials","、SSO 或 IMDS——任何 ",[703,849,850],{},"boto3"," 可以解析的凭证链。",[817,853,854,857,871],{},[835,855,856],{},"AWS SAM CLI",[835,858,859,862,863,866,867,870],{},[703,860,861],{},"hyperframes lambda deploy\u002Fdestroy"," 会调用 ",[703,864,865],{},"sam deploy","\u002F",[703,868,869],{},"sam delete","。",[835,872,873],{},[764,874,878],{"href":875,"rel":876},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fserverless-application-model\u002Flatest\u002Fdeveloperguide\u002Finstall-sam-cli.html",[877],"nofollow","安装指南",[817,880,881,886,892],{},[835,882,883],{},[703,884,885],{},"bun",[835,887,888,889,870],{},"部署时用于构建 ",[703,890,891],{},"packages\u002Faws-lambda\u002Fdist\u002Fhandler.zip",[835,893,894,897,898],{},[703,895,896],{},"npm install -g bun"," 或 ",[764,899,902],{"href":900,"rel":901},"https:\u002F\u002Fbun.sh",[877],"bun.sh",[817,904,905,908,918],{},[835,906,907],{},"HyperFrames 仓库检出",[835,909,910,913,914,917],{},[703,911,912],{},"lambda deploy"," 从源码构建 Lambda 处理函数 ZIP。如果在仓库外部署，可以设置 ",[703,915,916],{},"HYPERFRAMES_REPO_ROOT"," 指向仓库路径。",[835,919,920],{},[703,921,922],{},"git clone https:\u002F\u002Fgithub.com\u002Fheygen-com\u002Fhyperframes",[785,924,925],{"id":925},"三种部署路径",[927,928,930,931,934],"h3",{"id":929},"路径-1-hyperframes-lambda-cli推荐","路径 1 — ",[703,932,933],{},"hyperframes lambda"," CLI（推荐）",[692,936,937,938,941],{},"CLI 是对 SAM 模板 + ",[703,939,940],{},"@hyperframes\u002Faws-lambda"," SDK 的轻量封装。对于大多数用户来说，这是正确的起点。",[696,943,945],{"className":698,"code":944,"language":700,"meta":701,"style":701},"hyperframes lambda deploy \\\n--stack-name=hyperframes-prod \\\n--region=us-east-1 \\\n--concurrency=8 \\\n--memory=10240\n",[703,946,947,960,965,970,976],{"__ignoreMap":701},[706,948,949,951,953,956],{"class":708,"line":709},[706,950,713],{"class":712},[706,952,717],{"class":716},[706,954,955],{"class":716}," deploy",[706,957,959],{"class":958},"sTEyZ"," \\\n",[706,961,962],{"class":708,"line":723},[706,963,964],{"class":958},"--stack-name=hyperframes-prod \\\n",[706,966,967],{"class":708,"line":752},[706,968,969],{"class":958},"--region=us-east-1 \\\n",[706,971,973],{"class":708,"line":972},4,[706,974,975],{"class":958},"--concurrency=8 \\\n",[706,977,979],{"class":708,"line":978},5,[706,980,981],{"class":958},"--memory=10240\n",[692,983,984,985,988,989,992],{},"默认的 ",[703,986,987],{},"--concurrency=8"," 对新用户来说是刻意保守的设置。Lambda Map 状态的默认值允许无限数量的 chunk 并行执行；8 可以将失控渲染的最坏情况花费限制在大约 ",[703,990,991],{},"8 × (15 min × 10 GB × $0.0000167\u002FGB-s) ≈ $1.20","。在确定了典型渲染的 chunk 数量后，可以适当提高该值。",[692,994,995],{},"部署后，使用以下命令渲染任何项目：",[696,997,999],{"className":698,"code":998,"language":700,"meta":701,"style":701},"hyperframes lambda render .\u002Fmy-project --width 1920 --height 1080 --wait\n",[703,1000,1001],{"__ignoreMap":701},[706,1002,1003,1005,1007,1009,1011,1013,1015,1017,1019],{"class":708,"line":709},[706,1004,713],{"class":712},[706,1006,717],{"class":716},[706,1008,730],{"class":716},[706,1010,733],{"class":716},[706,1012,736],{"class":716},[706,1014,740],{"class":739},[706,1016,743],{"class":716},[706,1018,746],{"class":739},[706,1020,749],{"class":716},[692,1022,1023,1026,1027,1030],{},[703,1024,1025],{},"--wait"," 标志会阻塞并流式输出每个 chunk 的进度和累计费用；去掉该标志可以异步执行，然后按自己的节奏使用 ",[703,1028,1029],{},"hyperframes lambda progress \u003CrenderId>"," 轮询。",[692,1032,1033,1034,870],{},"完整的标志文档请参阅 ",[764,1035,1037],{"href":1036},"\u002Fpackages\u002Fcli#hyperframes-lambda","CLI 参考",[1039,1040,1042,1043,1046],"h4",{"id":1041},"使用-sites-create-预先暂存项目","使用 ",[703,1044,1045],{},"sites create"," 预先暂存项目",[692,1048,1049,1050,1053],{},"每次 ",[703,1051,1052],{},"lambda render"," 调用时重复渲染同一项目树会重新打包和上传。对于紧密的内部循环（CI 冒烟测试、demo 流程中的 prompt 迭代），可以预先暂存项目并复用上传：",[696,1055,1057],{"className":698,"code":1056,"language":700,"meta":701,"style":701},"hyperframes lambda sites create .\u002Fmy-project\n# → Site ID: a1b2c3d4e5f6g7h8 (content-addressed)\n\nhyperframes lambda render .\u002Fmy-project --site-id=a1b2c3d4e5f6g7h8 \\\n--width 1920 --height 1080 --wait\n",[703,1058,1059,1074,1080,1086,1101],{"__ignoreMap":701},[706,1060,1061,1063,1065,1068,1071],{"class":708,"line":709},[706,1062,713],{"class":712},[706,1064,717],{"class":716},[706,1066,1067],{"class":716}," sites",[706,1069,1070],{"class":716}," create",[706,1072,1073],{"class":716}," .\u002Fmy-project\n",[706,1075,1076],{"class":708,"line":723},[706,1077,1079],{"class":1078},"sHwdD","# → Site ID: a1b2c3d4e5f6g7h8 (content-addressed)\n",[706,1081,1082],{"class":708,"line":752},[706,1083,1085],{"emptyLinePlaceholder":1084},true,"\n",[706,1087,1088,1090,1092,1094,1096,1099],{"class":708,"line":972},[706,1089,713],{"class":712},[706,1091,717],{"class":716},[706,1093,730],{"class":716},[706,1095,733],{"class":716},[706,1097,1098],{"class":716}," --site-id=a1b2c3d4e5f6g7h8",[706,1100,959],{"class":958},[706,1102,1103,1106,1109,1111,1113],{"class":708,"line":978},[706,1104,1105],{"class":958},"--width ",[706,1107,1108],{"class":739},"1920",[706,1110,743],{"class":716},[706,1112,746],{"class":739},[706,1114,749],{"class":716},[692,1116,1117,1120,1121,1123,1124,1127,1128,1131,1132,1134],{},[703,1118,1119],{},"siteId"," 通过项目树的 SHA-256 哈希实现内容寻址；对未更改的树重新运行 ",[703,1122,1045],{}," 会通过 ",[703,1125,1126],{},"HeadObject"," 短路跳过上传。将相同的 ",[703,1129,1130],{},"--site-id"," 传递给任意多次 ",[703,1133,1052],{}," 调用——它们都复用同一个 S3 PUT。",[927,1136,1138],{"id":1137},"路径-2-直接-sam-部署","路径 2 — 直接 SAM 部署",[692,1140,1141,1142,1145],{},"如果你想在部署前查看 CloudFormation，或者需要自定义拓扑（额外的告警、SNS 订阅者、KMS 密钥等），可以直接对 ",[703,1143,1144],{},"examples\u002Faws-lambda\u002Ftemplate.yaml"," 模板调用 SAM：",[696,1147,1149],{"className":698,"code":1148,"language":700,"meta":701,"style":701},"cd packages\u002Faws-lambda\nbun run build:zip                     # 生成 dist\u002Fhandler.zip\ncd ..\u002F..\u002Fexamples\u002Faws-lambda\nsam deploy \\\n--stack-name=hyperframes-prod \\\n--region=us-east-1 \\\n--resolve-s3 \\\n--capabilities CAPABILITY_IAM \\\n--no-confirm-changeset \\\n--parameter-overrides ChromeSource=sparticuz ReservedConcurrency=8\n",[703,1150,1151,1160,1173,1180,1189,1193,1198,1204,1215,1221],{"__ignoreMap":701},[706,1152,1153,1157],{"class":708,"line":709},[706,1154,1156],{"class":1155},"s2Zo4","cd",[706,1158,1159],{"class":716}," packages\u002Faws-lambda\n",[706,1161,1162,1164,1167,1170],{"class":708,"line":723},[706,1163,885],{"class":712},[706,1165,1166],{"class":716}," run",[706,1168,1169],{"class":716}," build:zip",[706,1171,1172],{"class":1078},"                     # 生成 dist\u002Fhandler.zip\n",[706,1174,1175,1177],{"class":708,"line":752},[706,1176,1156],{"class":1155},[706,1178,1179],{"class":716}," ..\u002F..\u002Fexamples\u002Faws-lambda\n",[706,1181,1182,1185,1187],{"class":708,"line":972},[706,1183,1184],{"class":712},"sam",[706,1186,955],{"class":716},[706,1188,959],{"class":958},[706,1190,1191],{"class":708,"line":978},[706,1192,964],{"class":958},[706,1194,1196],{"class":708,"line":1195},6,[706,1197,969],{"class":958},[706,1199,1201],{"class":708,"line":1200},7,[706,1202,1203],{"class":958},"--resolve-s3 \\\n",[706,1205,1207,1210,1213],{"class":708,"line":1206},8,[706,1208,1209],{"class":958},"--capabilities ",[706,1211,1212],{"class":716},"CAPABILITY_IAM",[706,1214,959],{"class":958},[706,1216,1218],{"class":708,"line":1217},9,[706,1219,1220],{"class":958},"--no-confirm-changeset \\\n",[706,1222,1224,1227,1230,1233],{"class":708,"line":1223},10,[706,1225,1226],{"class":958},"--parameter-overrides ",[706,1228,1229],{"class":716},"ChromeSource=sparticuz",[706,1231,1232],{"class":716}," ReservedConcurrency=",[706,1234,1235],{"class":739},"8\n",[692,1237,1238],{},"该模板会输出三个 CloudFormation 输出值，你需要它们来调用渲染：",[1240,1241,1242,1249,1255],"ul",{},[1243,1244,1245,1248],"li",{},[703,1246,1247],{},"RenderBucketName"," — 用于存储 plan 压缩包 + 每个 chunk 的输出 + 最终渲染结果的 S3 存储桶。",[1243,1250,1251,1254],{},[703,1252,1253],{},"RenderStateMachineArn"," — 编排 Plan → Map → Assemble 的 Step Functions 标准工作流。",[1243,1256,1257,1260],{},[703,1258,1259],{},"RenderFunctionArn"," — 状态机调度的单个 Lambda 函数。",[1262,1263,1264,1271],"blockquote",{},[692,1265,1266,1267],{},"⚠️ ",[1268,1269,1270],"strong",{},"Warning",[692,1272,1273,1274,1277,1278,1281,1282,1285,1286,1289,1290,1292],{},"SAM 模板自身的 ",[703,1275,1276],{},"ReservedConcurrency"," 默认值为 ",[703,1279,1280],{},"-1","（未预留，使用账户默认值）。路径 1 的 CLI 将其覆盖为 ",[703,1283,1284],{},"8"," 以限制首次使用的费用；如果在这里从 ",[703,1287,1288],{},"--parameter-overrides"," 中去掉 ",[703,1291,1276],{},"，则使用未预留的默认值。除非你已经确定了典型渲染的 fan-out 规模，否则请显式设置该值。",[927,1294,1296],{"id":1295},"路径-3-cdk-构造","路径 3 — CDK 构造",[692,1298,1299,1300,1302,1303,1306],{},"对于已经使用 CDK 的用户，",[703,1301,940],{}," 包导出了一个 ",[703,1304,1305],{},"HyperframesRenderStack"," L2 构造，生成与 SAM 模板相同的拓扑：",[696,1308,1312],{"className":1309,"code":1310,"language":1311,"meta":701,"style":701},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { App, CfnOutput, Stack } from \"aws-cdk-lib\";\nimport { HyperframesRenderStack } from \"@hyperframes\u002Faws-lambda\u002Fcdk\";\n\nconst app = new App();\nconst stack = new Stack(app, \"MyApp\");\nconst render = new HyperframesRenderStack(stack, \"Render\", {\nprojectName: \"hyperframes\",\nlambdaMemoryMb: 10240,\nreservedConcurrency: 8,\nchromeSource: \"sparticuz\",\n});\n\nnew CfnOutput(stack, \"RenderBucketName\", { value: render.bucket.bucketName });\nnew CfnOutput(stack, \"StateMachineArn\", { value: render.stateMachine.stateMachineArn });\n","ts",[703,1313,1314,1356,1378,1382,1404,1434,1464,1482,1494,1506,1522,1532,1537,1583],{"__ignoreMap":701},[706,1315,1316,1320,1324,1327,1330,1333,1335,1338,1341,1344,1347,1350,1353],{"class":708,"line":709},[706,1317,1319],{"class":1318},"s7zQu","import",[706,1321,1323],{"class":1322},"sMK4o"," {",[706,1325,1326],{"class":958}," App",[706,1328,1329],{"class":1322},",",[706,1331,1332],{"class":958}," CfnOutput",[706,1334,1329],{"class":1322},[706,1336,1337],{"class":958}," Stack",[706,1339,1340],{"class":1322}," }",[706,1342,1343],{"class":1318}," from",[706,1345,1346],{"class":1322}," \"",[706,1348,1349],{"class":716},"aws-cdk-lib",[706,1351,1352],{"class":1322},"\"",[706,1354,1355],{"class":1322},";\n",[706,1357,1358,1360,1362,1365,1367,1369,1371,1374,1376],{"class":708,"line":723},[706,1359,1319],{"class":1318},[706,1361,1323],{"class":1322},[706,1363,1364],{"class":958}," HyperframesRenderStack",[706,1366,1340],{"class":1322},[706,1368,1343],{"class":1318},[706,1370,1346],{"class":1322},[706,1372,1373],{"class":716},"@hyperframes\u002Faws-lambda\u002Fcdk",[706,1375,1352],{"class":1322},[706,1377,1355],{"class":1322},[706,1379,1380],{"class":708,"line":752},[706,1381,1085],{"emptyLinePlaceholder":1084},[706,1383,1384,1388,1391,1394,1397,1399,1402],{"class":708,"line":972},[706,1385,1387],{"class":1386},"spNyl","const",[706,1389,1390],{"class":958}," app ",[706,1392,1393],{"class":1322},"=",[706,1395,1396],{"class":1322}," new",[706,1398,1326],{"class":1155},[706,1400,1401],{"class":958},"()",[706,1403,1355],{"class":1322},[706,1405,1406,1408,1411,1413,1415,1417,1420,1422,1424,1427,1429,1432],{"class":708,"line":978},[706,1407,1387],{"class":1386},[706,1409,1410],{"class":958}," stack ",[706,1412,1393],{"class":1322},[706,1414,1396],{"class":1322},[706,1416,1337],{"class":1155},[706,1418,1419],{"class":958},"(app",[706,1421,1329],{"class":1322},[706,1423,1346],{"class":1322},[706,1425,1426],{"class":716},"MyApp",[706,1428,1352],{"class":1322},[706,1430,1431],{"class":958},")",[706,1433,1355],{"class":1322},[706,1435,1436,1438,1441,1443,1445,1447,1450,1452,1454,1457,1459,1461],{"class":708,"line":1195},[706,1437,1387],{"class":1386},[706,1439,1440],{"class":958}," render ",[706,1442,1393],{"class":1322},[706,1444,1396],{"class":1322},[706,1446,1364],{"class":1155},[706,1448,1449],{"class":958},"(stack",[706,1451,1329],{"class":1322},[706,1453,1346],{"class":1322},[706,1455,1456],{"class":716},"Render",[706,1458,1352],{"class":1322},[706,1460,1329],{"class":1322},[706,1462,1463],{"class":1322}," {\n",[706,1465,1466,1470,1473,1475,1477,1479],{"class":708,"line":1200},[706,1467,1469],{"class":1468},"swJcz","projectName",[706,1471,1472],{"class":1322},":",[706,1474,1346],{"class":1322},[706,1476,713],{"class":716},[706,1478,1352],{"class":1322},[706,1480,1481],{"class":1322},",\n",[706,1483,1484,1487,1489,1492],{"class":708,"line":1206},[706,1485,1486],{"class":1468},"lambdaMemoryMb",[706,1488,1472],{"class":1322},[706,1490,1491],{"class":739}," 10240",[706,1493,1481],{"class":1322},[706,1495,1496,1499,1501,1504],{"class":708,"line":1217},[706,1497,1498],{"class":1468},"reservedConcurrency",[706,1500,1472],{"class":1322},[706,1502,1503],{"class":739}," 8",[706,1505,1481],{"class":1322},[706,1507,1508,1511,1513,1515,1518,1520],{"class":708,"line":1223},[706,1509,1510],{"class":1468},"chromeSource",[706,1512,1472],{"class":1322},[706,1514,1346],{"class":1322},[706,1516,1517],{"class":716},"sparticuz",[706,1519,1352],{"class":1322},[706,1521,1481],{"class":1322},[706,1523,1525,1528,1530],{"class":708,"line":1524},11,[706,1526,1527],{"class":1322},"}",[706,1529,1431],{"class":958},[706,1531,1355],{"class":1322},[706,1533,1535],{"class":708,"line":1534},12,[706,1536,1085],{"emptyLinePlaceholder":1084},[706,1538,1540,1543,1545,1547,1549,1551,1553,1555,1557,1559,1562,1564,1566,1569,1572,1574,1577,1579,1581],{"class":708,"line":1539},13,[706,1541,1542],{"class":1322},"new",[706,1544,1332],{"class":1155},[706,1546,1449],{"class":958},[706,1548,1329],{"class":1322},[706,1550,1346],{"class":1322},[706,1552,1247],{"class":716},[706,1554,1352],{"class":1322},[706,1556,1329],{"class":1322},[706,1558,1323],{"class":1322},[706,1560,1561],{"class":1468}," value",[706,1563,1472],{"class":1322},[706,1565,730],{"class":958},[706,1567,1568],{"class":1322},".",[706,1570,1571],{"class":958},"bucket",[706,1573,1568],{"class":1322},[706,1575,1576],{"class":958},"bucketName ",[706,1578,1527],{"class":1322},[706,1580,1431],{"class":958},[706,1582,1355],{"class":1322},[706,1584,1586,1588,1590,1592,1594,1596,1599,1601,1603,1605,1607,1609,1611,1613,1616,1618,1621,1623,1625],{"class":708,"line":1585},14,[706,1587,1542],{"class":1322},[706,1589,1332],{"class":1155},[706,1591,1449],{"class":958},[706,1593,1329],{"class":1322},[706,1595,1346],{"class":1322},[706,1597,1598],{"class":716},"StateMachineArn",[706,1600,1352],{"class":1322},[706,1602,1329],{"class":1322},[706,1604,1323],{"class":1322},[706,1606,1561],{"class":1468},[706,1608,1472],{"class":1322},[706,1610,730],{"class":958},[706,1612,1568],{"class":1322},[706,1614,1615],{"class":958},"stateMachine",[706,1617,1568],{"class":1322},[706,1619,1620],{"class":958},"stateMachineArn ",[706,1622,1527],{"class":1322},[706,1624,1431],{"class":958},[706,1626,1355],{"class":1322},[692,1628,1629,1631,1632,1635,1636,1638,1639,1642],{},[703,1630,1349],{}," 和 ",[703,1633,1634],{},"constructs"," 被声明为 ",[703,1637,940],{}," 的",[1268,1640,1641],{},"可选对等依赖","，因此只需要 SDK 的用户无需承担 CDK 的导入开销。",[692,1644,1645,1646,1649,1650,1631,1653,1656],{},"该构造暴露了 ",[703,1647,1648],{},".bucket","、",[703,1651,1652],{},".renderFunction",[703,1654,1655],{},".stateMachine","，方便你在旁边接入仪表盘、SNS 主题或其他 AWS 资源，无需重新推导 ARN。",[785,1658,1660],{"id":1659},"iam-权限","IAM 权限",[692,1662,1663],{},"CLI 内置了 IAM 引导流程，避免首次部署时出现 \"User is not authorized to perform iam:CreateRole\" 错误：",[696,1665,1667],{"className":698,"code":1666,"language":700,"meta":701,"style":701},"# 打印需要附加到运行 CLI 的 IAM 用户的内联策略文档。\nhyperframes lambda policies user\n\n# 打印 CloudFormation 服务角色的 { TrustRelationship, InlinePolicy }。\nhyperframes lambda policies role --principal=cloudformation\n\n# 验证已签入的策略是否仍然满足 CLI 的需求（缺失时以非零状态退出）。\nhyperframes lambda policies validate .\u002Finfra\u002Fiam\u002Fhyperframes-deploy.json\n",[703,1668,1669,1674,1686,1690,1695,1709,1713,1718],{"__ignoreMap":701},[706,1670,1671],{"class":708,"line":709},[706,1672,1673],{"class":1078},"# 打印需要附加到运行 CLI 的 IAM 用户的内联策略文档。\n",[706,1675,1676,1678,1680,1683],{"class":708,"line":723},[706,1677,713],{"class":712},[706,1679,717],{"class":716},[706,1681,1682],{"class":716}," policies",[706,1684,1685],{"class":716}," user\n",[706,1687,1688],{"class":708,"line":752},[706,1689,1085],{"emptyLinePlaceholder":1084},[706,1691,1692],{"class":708,"line":972},[706,1693,1694],{"class":1078},"# 打印 CloudFormation 服务角色的 { TrustRelationship, InlinePolicy }。\n",[706,1696,1697,1699,1701,1703,1706],{"class":708,"line":978},[706,1698,713],{"class":712},[706,1700,717],{"class":716},[706,1702,1682],{"class":716},[706,1704,1705],{"class":716}," role",[706,1707,1708],{"class":716}," --principal=cloudformation\n",[706,1710,1711],{"class":708,"line":1195},[706,1712,1085],{"emptyLinePlaceholder":1084},[706,1714,1715],{"class":708,"line":1200},[706,1716,1717],{"class":1078},"# 验证已签入的策略是否仍然满足 CLI 的需求（缺失时以非零状态退出）。\n",[706,1719,1720,1722,1724,1726,1729],{"class":708,"line":1206},[706,1721,713],{"class":712},[706,1723,717],{"class":716},[706,1725,1682],{"class":716},[706,1727,1728],{"class":716}," validate",[706,1730,1731],{"class":716}," .\u002Finfra\u002Fiam\u002Fhyperframes-deploy.json\n",[692,1733,1734,1735,1738,1739,1742,1743,1746],{},"生成的文档对 CLI 所需的操作集授予 ",[703,1736,1737],{},"Resource: \"*\"","。首次成功部署后，你可以将 ",[703,1740,1741],{},"Resource"," 缩小到已部署的 ARN——根据上述 CloudFormation 输出可以预测。在 CI 中运行 CLI 的用户通常将策略文档签入源码管理，并在部署前运行 ",[703,1744,1745],{},"policies validate"," 以捕获策略偏移。",[785,1748,1749],{"id":1749},"费用结构",[692,1751,1752,1753,1756],{},"Lambda 渲染按 GB-秒计费（Lambda 计费时长 × 配置内存），另外 Step Functions 标准工作流还有少量的每次状态转换费用。",[703,1754,1755],{},"hyperframes lambda progress"," 会显示实时费用统计：",[696,1758,1760],{"className":698,"code":1759,"language":700,"meta":701,"style":701},"hyperframes lambda progress my-render-id\n# Status:    SUCCEEDED\n# Progress:  100%\n# Frames:    480 \u002F 480\n# Lambdas:   5\n# Cost:      $0.0214 (Lambda $0.0210 + SFN $0.0004)\n# Output:    s3:\u002F\u002Fhyperframes-renders\u002F...\u002Foutput.mp4\n",[703,1761,1762,1774,1779,1784,1789,1794,1799],{"__ignoreMap":701},[706,1763,1764,1766,1768,1771],{"class":708,"line":709},[706,1765,713],{"class":712},[706,1767,717],{"class":716},[706,1769,1770],{"class":716}," progress",[706,1772,1773],{"class":716}," my-render-id\n",[706,1775,1776],{"class":708,"line":723},[706,1777,1778],{"class":1078},"# Status:    SUCCEEDED\n",[706,1780,1781],{"class":708,"line":752},[706,1782,1783],{"class":1078},"# Progress:  100%\n",[706,1785,1786],{"class":708,"line":972},[706,1787,1788],{"class":1078},"# Frames:    480 \u002F 480\n",[706,1790,1791],{"class":708,"line":978},[706,1792,1793],{"class":1078},"# Lambdas:   5\n",[706,1795,1796],{"class":708,"line":1195},[706,1797,1798],{"class":1078},"# Cost:      $0.0214 (Lambda $0.0210 + SFN $0.0004)\n",[706,1800,1801],{"class":708,"line":1200},[706,1802,1803],{"class":1078},"# Output:    s3:\u002F\u002Fhyperframes-renders\u002F...\u002Foutput.mp4\n",[692,1805,1806,1807,1810,1811,1814],{},"费用数值为尽力估算：Lambda 计费时长来自处理函数自身的 ",[703,1808,1809],{},"DurationMs"," 返回值（SFN 历史记录会在成功载荷中展示），S3 传输费用不包含在内。如果你想验证，计算逻辑在 ",[703,1812,1813],{},"packages\u002Faws-lambda\u002Fsrc\u002Fsdk\u002FcostAccounting.ts"," 中；CLI 显示的数值与 AWS 账单报告基本一致（在四舍五入误差范围内）。",[785,1816,136],{"id":136},[927,1818,1820,1822],{"id":1819},"sam-deploy-报错-stack-already-exists",[703,1821,865],{}," 报错 \"Stack already exists\"",[692,1824,1825,1826,1829],{},"传入与首次相同的 ",[703,1827,1828],{},"--stack-name","。SAM 是幂等的——对现有栈重新运行会解析为空操作或就地更新。",[927,1831,1833],{"id":1832},"user-is-not-authorized-to-perform-iamcreaterole",[703,1834,1835],{},"User is not authorized to perform iam:CreateRole",[692,1837,1838,1839,1841,1842,1845,1846,1849],{},"运行 ",[703,1840,912],{}," 的 IAM 凭证没有权限创建 CloudFormation 所需的服务角色。运行 ",[703,1843,1844],{},"hyperframes lambda policies user"," 并将打印的策略附加到你的 IAM 用户（或者获取 ",[703,1847,1848],{},"policies role"," 输出，让管理员创建部署角色）。",[927,1851,1853],{"id":1852},"lambda-function-failed-plan_hash_mismatch",[703,1854,1855],{},"Lambda function failed: PLAN_HASH_MISMATCH",[692,1857,1858,1859,1862,1863,1866,1867,1870],{},"Step Functions 调用 ",[703,1860,1861],{},"renderChunk"," 时使用的 plan 哈希与 S3 上的 planDir 不匹配。几乎总是因为本地 ",[703,1864,1865],{},"plan()"," 构建和已部署的 Lambda ZIP 之间的 producer 版本不同。重新运行 ",[703,1868,1869],{},"hyperframes lambda deploy","（会重新构建 ZIP）并重新渲染。",[927,1872,1874],{"id":1873},"lambda-function-failed-browser_gpu_not_software",[703,1875,1876],{},"Lambda function failed: BROWSER_GPU_NOT_SOFTWARE",[692,1878,1879],{},"处理函数启动了 Chromium，但运行时探测发现了非 SwiftShader 的 GL 后端。硬件 GL 在 chunk 边界处是非确定性的，因此分布式渲染在运行时镜像\u002F启动标志层（而非 composition 层）拒绝它。重新构建处理函数 ZIP 并重新部署：",[696,1881,1883],{"className":698,"code":1882,"language":700,"meta":701,"style":701},"bun run --cwd packages\u002Faws-lambda build:zip\nhyperframes lambda deploy --stack-name=\u003Cyour-stack>\n",[703,1884,1885,1900],{"__ignoreMap":701},[706,1886,1887,1889,1891,1894,1897],{"class":708,"line":709},[706,1888,885],{"class":712},[706,1890,1166],{"class":716},[706,1892,1893],{"class":716}," --cwd",[706,1895,1896],{"class":716}," packages\u002Faws-lambda",[706,1898,1899],{"class":716}," build:zip\n",[706,1901,1902,1904,1906,1908,1911,1914,1917],{"class":708,"line":723},[706,1903,713],{"class":712},[706,1905,717],{"class":716},[706,1907,955],{"class":716},[706,1909,1910],{"class":716}," --stack-name=",[706,1912,1913],{"class":1322},"\u003C",[706,1915,1916],{"class":716},"your-stack",[706,1918,1919],{"class":1322},">\n",[692,1921,1922,1923,1926,1927,1930,1931,1933],{},"构建流程固定了 ",[703,1924,1925],{},"@sparticuz\u002Fchromium"," + Chrome 标志（",[703,1928,1929],{},"--use-gl=swiftshader --use-angle=swiftshader","），因此重新部署几乎总能解决此问题。如果问题仍然存在，说明你的栈的 Lambda 函数指向了之前部署的过时处理函数 ZIP——",[703,1932,912],{}," 总是会重新构建，因此重新运行可以解决。",[927,1935,1937,1938],{"id":1936},"渲染似乎卡在-running","渲染似乎卡在 ",[703,1939,1940],{},"RUNNING",[692,1942,1943,1944,1947,1948,1951],{},"最常见的原因是多 chunk 渲染上的 Lambda 冷启动链。Map 状态的预留并发数限制了可以并行运行的 chunk 数量——如果你设置了 ",[703,1945,1946],{},"--concurrency=4"," 而你的渲染有 16 个 chunk，状态机将分批处理（每批 4 个）。",[703,1949,1950],{},"hyperframes lambda progress \u003Cid>"," 显示当前正在进行的调用数量。",[692,1953,1954,1955,1649,1958,1961],{},"如果进度超过 10 分钟没有推进，请在 AWS 控制台中检查 Step Functions 执行——失败的 Lambda 调用包含类型化的错误名称（",[703,1956,1957],{},"FONT_FETCH_FAILED",[703,1959,1960],{},"FFMPEG_VERSION_MISMATCH"," 等），这些错误会使状态机短路。",[927,1963,1965],{"id":1964},"销毁不会回收-s3-存储","销毁不会回收 S3 存储",[692,1967,1968,1969,1972,1973,1976,1977,1979,1980,1983],{},"渲染存储桶在创建时使用了 CloudFormation 的 ",[703,1970,1971],{},"Retain"," 删除策略——",[703,1974,1975],{},"hyperframes lambda destroy","（或 ",[703,1978,869],{},"）会销毁函数和状态机，但存储桶会保留。这是有意为之：保护最终渲染的 MP4 不会在重新部署时丢失。要完全回收存储，请通过 AWS 控制台 \u002F ",[703,1981,1982],{},"aws s3 rb"," 清空并删除存储桶。",[785,1985,1987],{"id":1986},"v1-版本中不包含的功能","v1 版本中不包含的功能",[1240,1989,1990,2003,2019,2029],{},[1243,1991,1992,1995,1996,1998,1999,2002],{},[1268,1993,1994],{},"完成时 Webhooks。"," v1 不包含——使用 ",[703,1997,1755],{}," 轮询或查看 Step Functions 执行。带 SNS 主题的 ",[703,2000,2001],{},"--webhook"," 标志在 Phase 6c 计划中。",[1243,2004,2005,2011,2012,2014,2015,2018],{},[1268,2006,2007,2010],{},[703,2008,2009],{},"compositions"," 发现命令。"," 将单独提供（计划中的 PR 6.10）；目前请将 ",[703,2013,1052],{}," 指向包含 ",[703,2016,2017],{},"index.html"," 的项目目录。",[1243,2020,2021,2024,2025,2028],{},[1268,2022,2023],{},"多区域。"," 每个 ",[703,2026,2027],{},"--region"," 是一个独立的栈。没有内置的跨区域故障转移。",[1243,2030,2031,2034],{},[1268,2032,2033],{},"HDR。"," 分布式模式仅支持 SDR。带 bsf 信令的 HDR mp4 在 v1.5 计划中。",[2036,2037,2038],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":701,"searchDepth":709,"depth":723,"links":2040},[2041,2042,2043,2049,2050,2051,2061],{"id":787,"depth":723,"text":787},{"id":809,"depth":723,"text":809},{"id":925,"depth":723,"text":925,"children":2044},[2045,2047,2048],{"id":929,"depth":752,"text":2046},"路径 1 — hyperframes lambda CLI（推荐）",{"id":1137,"depth":752,"text":1138},{"id":1295,"depth":752,"text":1296},{"id":1659,"depth":723,"text":1660},{"id":1749,"depth":723,"text":1749},{"id":136,"depth":723,"text":136,"children":2052},[2053,2055,2056,2057,2058,2060],{"id":1819,"depth":752,"text":2054},"sam deploy 报错 \"Stack already exists\"",{"id":1832,"depth":752,"text":1835},{"id":1852,"depth":752,"text":1855},{"id":1873,"depth":752,"text":1876},{"id":1936,"depth":752,"text":2059},"渲染似乎卡在 RUNNING",{"id":1964,"depth":752,"text":1965},{"id":1986,"depth":723,"text":1987},"将分布式 HyperFrames 渲染部署到 AWS Lambda，并从笔记本电脑或 CI 驱动渲染。","md",null,{},{"title":157,"description":2062},"hFJy6GF7z1OmN56wOjL9RAt-i16Da0A2si9Qp_AOJFw",[2069,2071],{"title":148,"path":154,"stem":155,"description":2070,"children":-1},"通过一键模板在云端运行 Hyperframes 预览 + 渲染 API。",{"title":161,"path":162,"stem":163,"description":2072,"children":-1},"在 AWS Lambda 上使用 --variables 和 lambda render-batch 命令大规模渲染个性化模板视频。",1780322255144]