跳转至

任意长度的影片

一部影片的长度是 meta.durationFrames,这个数字来自故事,永远不来自模板。三分钟、五分钟、二十分钟:引擎逐帧流式输出,闸门逐帧测量,没有任何东西会把整部影片缓冲下来。随长度变化的,是你组织工作的方式。

约 90 秒以内:一条弧线

就按入口页里写的影片工作流来:三句话(铺垫、转变、回报),一个会重新出现的信物,一张 cue 表,一张定调静帧,一段音乐小样,从头到尾做完。

更长:分章节

长影片是一串章节,每章有自己的小弧线,由一条主线串起来。

  1. 先写骨架:用一句话写出主线,然后每章写一行(这一章里什么发生了变化)。如果一章什么都没改变,就删掉它。
  2. 每章一张 cue 表,外加一张总表来安排各章的位置。章节表用本章内的帧号;总表加上偏移量。给某一章重新定时会挪动它之后的一切,检查器在加载时对两个层级都会运行。
  3. 一份画风契约(项目里的 STYLE-GUIDE.md),在开始并行工作之前定好:配色、成片尺寸下的线宽、每种形状的字号、各角色的模块、音乐风格及其各段的情绪。各章导入它;谁也不私下改它。
  4. 转场承载故事:每一章都用匹配剪辑、遮挡切换(一个形状经过、翻过一页、一团雾浓到最浓)或一件共享的信物交接给下一章。每两章之间都硬切到黑场,那就是幻灯片。六种机制以及各自适用的场合,见 references/motion-grammar.md。
  5. 音乐跟随章节:一个主题,按每章的情绪变奏(见 references/music/),转场也要配乐(声音提前进入的 pre-lap、枢轴和弦、织体交接)。
  6. 先逐章审,再完整审一遍:每章一张联系表,每拍一格;然后把整部影片完整看一遍,有声和无声各看一次。

渲染长作品

  • 把各章作为独立的影片并行渲染(每部影片用 --workers,每两个机器核心跑一部影片),再用 ffmpeg 的 concat demuxer 把各段 MP4 拼接起来。每一章单独拿出来仍然可以精确复现。
  • 片子越长,绘制预算越要紧:把画完的图层缓存起来,缓存键要写明其像素所依赖的一切,并且让单帧绘制时间的中位数远低于 150 ms。
  • 闸门的冷场检查一次只读一小帧,所以一部二十分钟的影片花的是时间,不是内存。