Remotion 视频流水线
真实素材 + 代码绘制的文字排版 = 无拼写错误且可重复编辑的品牌视频。
流水线
- 盘点原始素材:
scripts/inventory.sh <raw-dir> > index.tsv(id、路径、时长、分辨率)。 - 代理文件:
scripts/make-proxies.sh index.tsv proxy/创建 1080 宽、30 fps、全内帧式 H.264(-g 15)且不带音频的副本。在代理文件上进行编辑和渲染;4K/HEVC 原始文件会使 Remotion 寻道缓慢,甚至导致 Chrome 崩溃。 - 通过查看而非猜测来选择片段:
scripts/contact-sheet.sh proxy/v01.mp4 sheets/v01.jpg每秒打印一帧到网格中。打开接触表,记下每个剪辑的起始秒数。 - 在
template/中合成(复制它):Footage(修剪、缩放后的素材)、Scrim(用于文字易读性的渐变遮罩)、Line(动画文字)。每个输出一个合成(例如Main30 秒、Teaser9 秒、Spot16x920 秒)。 - 渲染:
npx remotion render <CompositionId> out/<name>.mp4。配置已设置 H.264、CRF 17、yuv420p。 - 验证:提取 3 帧静帧(
ffmpeg -ss 5 -i out.mp4 -frames:v 1 still.png)并检查;检查时长以及音频策略(静音或音乐)是否符合客户预期。
陷阱(每个都浪费过实际时间)
- 在根元素上设置
lang="tr"(或正确的语言);否则 CSStext-transform: uppercase会将土耳其语的i变为I(MAKINASI、TEKLIF)。最好在字符串中直接键入最终的大小写形式。 while read循环内部的ffmpeg会吞掉 stdin:始终传递-nostdin。- zsh 的分词方式与 bash 不同:
set -- $p和$2:s会出错。请使用#!/usr/bin/env bash编写脚本。 - 许多 ffmpeg 版本没有
drawtext。在 Remotion 中绘制文字,绝不在 ffmpeg 中绘制。 - 基于 HTML 的渲染器(例如 Hyperframes)可能会在场景之间留下“暗淡”的叠加图层;同时使用显式的透明度动画来淡入淡出场景。将这些渲染放在前台运行(后台
nohup运行会被取消),并使用ffmpeg -i in.mp4 -c:v libx264 -crf 18 -pix_fmt yuv420p out.mp4转换 HEVC 输出。 - 手机素材旋转:检查
ffprobe的旋转标签;竖屏素材放在横屏合成中需要objectFit: cover加上显式的裁切。 - 只展示素材中实际出现的内容。不要在屏幕文字中虚构规格、容量或价格。
- 将客户文件排除在你发布的仓库之外;素材和徽标属于客户。
参见 references/checklist.md 获取交付清单。