何时使用
当您需要时使用@hyperframes/producer:
- 以编程方式从 Node.js 将合成渲染为 MP4 或 WebM(例如,在后端服务或 CI 管道中)
- 通过对管道的细粒度控制构建自定义渲染服务
- 针对黄金基线运行视觉回归测试
- 不同配置下的基准渲染性能
- 从命令行渲染,无需编写代码 - 使用 CLI (
npx hyperframes render) - 在浏览器中预览合成 — 使用 CLI 或 studio
- 无需编码即可捕获帧 — 使用 engine
- Lint 或解析 HTML 组合 — 使用 core
它的作用
制作人协调完整的渲染管道:1
加载合成 HTML
读取您的
index.html 和任何引用的子组合。2
注入 Hyperframes 运行时
添加管理时间线搜索、剪辑生命周期和媒体播放的运行时脚本。
3
等待就绪门
轮询
window.__playerReady 和 window.__renderReady 以确保在捕获开始之前加载所有资源(字体、图像、视频)。4
通过引擎捕获帧
使用 engine’s BeginFrame 管道将每个帧捕获为像素缓冲区。
5
通过 FFmpeg 编码为 MP4 或 WebM
使用选定的质量预设将帧缓冲区传输到 FFmpeg。 MP4使用h264; WebM 使用带有 alpha 透明度支持的 VP9。
6
混合音轨
从视频剪辑和音频元素中提取音频,应用
data-volume 和 data-media-start 偏移量,并将它们混合到最终的 MP4 中。程序化使用
生产者使用两步 API:创建渲染作业配置,然后执行它。渲染配置
具有透明度的 WebM
设置format: 'webm' 使用 VP9 Alpha 以透明背景渲染:
format: 'webm' 时:
- 帧被捕获为 PNG(保留 Alpha 通道)
- Chrome的页面背景通过CDP设置为透明
- FFmpeg 使用 VP9 +
yuva420p像素格式进行编码 - 音频编码为 Opus(而不是 MP4 的 AAC)
HDR输出
设置hdr: true 以启用 HDR 检测。制作者会探测每个视频和图像源的 BT.2020 / PQ / HLG 颜色标记 - 如果找到任何 HDR 源,则输出将使用带有 HDR10 静态元数据的 H.265 10 位 BT.2020。仅 SDR 组合不受影响。
hdr: true 时:
- 通过
ffprobe探测源;当两者都存在时,PQ 优先于 HLG - HDR 视频和图像被提取为 16 位线性光像素并本地合成
- SDR DOM 叠加层在叠加到顶部之前从 sRGB → BT.2020 转换
- 输出使用
libx265与yuv420p10le和 HDR10 母带/内容光级别元数据 format必须是'mp4'—'mov'和'webm'回退到 SDR- HDR
<img>支持仅限静态图像;带有 HDR 标签的动画图像仅使用第一帧
进度回调
消除
HTTP服务器
生产者包括一个内置的 HTTP 服务器,用于作为渲染服务运行:服务器端点
对于自定义服务器集成,请使用较低级别的处理程序:
Docker 渲染
对于确定性输出,制作者可以使用固定的 Chrome 版本和字体集在 Docker 容器内进行渲染。这保证了机器之间的相同输出——对于 CI 管道和生产服务至关重要。Docker 模式需要安装并运行 Docker。运行
npx hyperframes doctor 来验证您的环境。有关 Docker 模式具有确定性的详细信息,请参阅确定性渲染。质量预设
GPU编码
生产者支持硬件加速编码以实现更快的渲染:
启用 GPU 编码后,Hyperframes 会自动检测可用的 FFmpeg 硬件编码器。要检查您的系统的功能:
--no-browser-gpu 作为选择退出。直接使用生产者 API 时,传递引擎配置覆盖:
额外出口
为了方便起见,生产者还重新导出关键引擎功能:记录
生产者提供了一个小型可插拔记录器,因此调用者可以注入 Pino、Winston 或任何结构化后端,而无需依赖它。createConsoleLogger(level) 返回一个控制台支持的实现,该实现按级别进行过滤并对可选的 meta 对象进行 JSON 字符串化。 defaultLogger 是 level="info" 处的单例。
跳过热路径中昂贵的元数据
isLevelEnabled 是可选,因此现有的自定义记录器保持不变。当您在热循环中构建一个重要的元对象只是为了附加到调试日志时,请使用 nullish-coalescing 模式来控制构造,以便生产运行 (level=info) 无需支付任何费用,而没有该方法的记录器的行为与以前完全相同:
?? true 回退意味着使用未实现 isLevelEnabled 的自定义记录器的调用者继续构建并传递元对象 - 优化是针对需要它的记录器实现的选择。
回归测试
生成器包含一个回归工具,用于将渲染输出与黄金基线进行比较。这对于在更改运行时、引擎或渲染管道时捕获视觉回归非常有用。标杆管理
找到适合您的硬件的最佳渲染设置:外部资产(projectDir 之外的文件)
组合可以引用项目外部资源的绝对路径
目录 — ~/Downloads 中的本地画外音、共享驱动器映像、
在绝对路径上生成的夹具。生产者通过以下方式处理这些问题:
- 检测。 在编译期间,HTML 编译器会遍历每个
[src]/[href]以及<style>中的每个url(...)。一条路径 解析为projectDir之外的文件被收集到externalAssets地图。 - 经过消毒的密钥。 每个绝对路径都被转换为安全的、
以
hf-ext/为前缀的跨平台相对密钥。视窗 驱动器盘符冒号被剥离 (D:\foo\x.wav→hf-ext/D/foo/x.wav) 以便path.join(compileDir, key)保留在编译中 每个操作系统上的目录。 - 复制 + 重写。 Orchestrator 将文件复制到
<compileDir>/hf-ext/...并且 HTML 被重写以指向 已消毒的钥匙。然后,文件服务器同时服务于项目内部和 外部资产同根同源。
path.relative() 而不是硬编码
分隔符,因此外部资源在 macOS、Linux 和
视窗。请参阅 packages/producer/src/utils/paths.ts 了解帮助程序。
相关套餐
命令行界面
命令行界面,包装生产者以进行渲染、预览等。
引擎
生产者用来抓取帧的低级捕获管道。
核
生产者所依赖的类型、运行时和 linter。
工作室
用于在与制作人一起渲染之前构建合成的可视化编辑器。