渲染与优化
每一条规则都源于过往视频的经验教训;方括号内为来源(图例见文末)。 当来源存在分歧时,会同时给出两个建议,并注明各自适用的场景。
简短规则
- 渲染按时间取帧,而非逐帧播放动画:一个属性对应一个动画,脉冲效果使用补间动画(tweens),而非
@keyframes。[视觉] - 外部脚本和字体请放入项目中,而非在渲染时从网络加载。[视觉][科普]
- 颗粒噪声根据帧编号计算,而非使用随机数生成器[科普];保存随机数生成器的序列,确保旧版本能逐字节地以相同方式重新构建。[音频]
- 在优化之前,先检查时间消耗在何处。[3D]
- 使用 NVENC 编码并限制比特率;在同一样本上通过 PSNR 比较编码质量。[3D]
- 渲染启动时应与会话分离;同一张显卡上两个版本应顺序执行,而非同时进行。[3D]
- 将文件迁移到渲染机器后,核对文件的校验和。[3D]
- 图像和音频保持分离:音频通过复制视频流混入,不重新编码画面。[视频][视觉][3D]
- 交付前运行 ffprobe 检查,并确认页面提供的是新文件。[视频]
- 不要删除旧版本。[视频][音频]
详细说明
seek-render.md—— 逐帧渲染与跳转的常见陷阱,确定性。performance.md—— 时间消耗分析,编码,workers,渲染启动。mux-and-delivery.md—— 音频混流,成品文件检查,版本管理。
来源
- [音频] —— 过往关于音频和配音的课程,面向宣传片和演示文稿。
- [视频] —— 过往关于视频的课程:界面录制,节奏,转场。
- [视觉] —— 过往关于宣传片视觉效果的课程,基于原理图帧(HTML 帧 → 逐帧渲染与跳转)。
- [3D] —— 关于浏览器中第一人称 3D 影片的课程(three.js → 逐帧渲染)。
- [科普] —— 关于苏联科普风格及 70 年代初幻灯片的视频课程。