Communitygithub.com

Chrome视频渲染适配器

面向Remotion和HyperFrames的Android Chrome视频渲染适配器。使用`cvr`进行快速轻量的渲染启动,使用`rvc`获取详细的环境、硬件、分段和同步检测。首次运行时会测量短/长渲染计划。支持无头Chrome、便携浏览器发现、前台并行渲染、自适应分段、PCM音频组装和音频/视频同步验证。

Chrome视频渲染适配器 是什么?

Chrome Video Render (CVR) 是一个专为Android/proot环境设计的浏览器渲染适配器,主要用于Remotion和HyperFrames框架。它通过两种运行模式满足不同需求:`cvr`模式面向日常渲染,首次运行时通过测量短(≤300帧)和长视频的渲染计划来确定最佳工作进程数,后续运行直接读取计划文件立即启动;`rvc`模式则用于诊断和发布检查,每次运行都会重新测量并覆盖计划文件,同时生成完整的环境报告、硬件预算详情、分段验证和可选的同步检查。该工具支持无头Chrome、便携浏览器发现、前台并行渲染和自适应分段,能够将长视频避免拆分成大量需要重新启动浏览器的片段。渲染计划通过实际测量而非推断得出,因此不提供默认工作进程数,用户可通过`--workers N`参数绕过探测。该工具已在Android/proot aarch64平台上与Remotion 4.0.538和HyperFrames 0.8.198验证,支持小数FPS、无声和有声合成、参数转发及同步检测。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jacky-xw/chrome-video-render/tree/main

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Chrome视频渲染(CVR)

面向Android/proot的浏览器及渲染适配器,用于Remotion和HyperFrames。合成内容与音频时间线仍由视频项目拥有。

启动模式

模式用途启动行为
cvr默认、日常渲染首次运行测量短/长渲染计划(持续时间随候选数量按比例增加,会事先告知);后续运行读取计划文件并立即启动;无额外的npm/浏览器版本探测;输出简洁的一行结果
rvc诊断、发布检查每次运行重新测量两种计划并覆盖共享计划文件(历史保留);完整的环境报告、硬件预算详情、逐段验证及可选的同步检查;分阶段的时间摘要

两种模式均为前台运行。独立任务串行执行;单个任务内的并行度受测量计划的限制。

# 轻量模式
python3 /skills/chrome-video-render/scripts/remotion-segmented.py --project . --composition Hello --output out.mp4 --mode quick

# 详细模式
python3 /skills/chrome-video-render/scripts/remotion-segmented.py --project . --composition Hello --output out.mp4 --mode full --sync-check

渲染计划

工作进程数通过测量而非推断得出。首次使用时,在每个候选工作进程数下对两个固定的探测合成进行多次渲染,取中位数决定每个候选的得分;优胜者分别记录为短(≤300帧)和长视频,存储在<project>/node_modules/.cache/cvr-render-plan.json中。后续的cvr运行读取匹配的计划并立即开始渲染。rvc每次运行重新测量,覆盖计划文件,并使用新数值进行渲染;每次写入都会附加到history列表中。

不提供默认的工作进程数,因为优胜者取决于具体设备。首次运行会在开始前打印其操作内容,因为每次探测每个候选、每轮、每个长度类都需要一次渲染。传递--workers N可完全绕过探测。

浏览器环境

source /skills/chrome-video-render/scripts/video-browser-env.sh

cvr使用此安装中的启动器。rvc额外运行render-env.sh --json以获取浏览器、引擎和硬件报告。对于/skills之外的检出目录,请使用该检出目录的scripts/目录。

Remotion

python3 /skills/chrome-video-render/scripts/remotion-segmented.py \
  --project /path/to/project --entry src/index.ts \
  --composition Hello --output /path/to/output.mp4 \
  --input-props '{"title":"Example"}'

使用目标项目的Remotion包以及官方的selectComposition()、renderMedia()和combineChunks() API。支持小数FPS和JSON属性。生成PCM分段并最终进行一次AAC交付编码。

当省略--segment-frames时,分段大小会根据合成长度自适应:最长300帧时90帧一段,最长900帧时150帧一段,最长3000帧时300帧一段,超出则450帧一段。这样长视频可以避免被拆分成数十个需要重新启动浏览器的分段。传递--segment-frames可固定分段大小。

HyperFrames

在项目审核与批准后:

python3 /skills/chrome-video-render/scripts/hyperframes-render.py \
  --project /path/to/project --output /path/to/output.mp4 \
  --quality looks --workers 2   # 示例值;按项目选择

保留HyperFrames原生时间线、混音器和工作进程系统。后端适配器通过函数签名选择,而非生成的构建文件名。

--mode quick使用已安装的无头壳启动器;--mode full运行render-env.sh并根据硬件预算确定工作进程数。底层hyperframes render调用在两种模式下相同,明确传递--workers也会被尊重。HyperFrames不使用测量的渲染计划。

验证

  • cvr:基本的解码帧、FPS、尺寸和音频属性检查;除非请求校准检查,否则同步状态保持为not-measured。
  • rvc:单遍完整解码、逐段详情、硬件预算、基于标记的同步检查以及分阶段的时间摘要。
  • check-av-sync.py需要一个包含已知PCM脉冲和视觉闪烁的校准合成。
  • selftest-av-sync.py验证对齐信号和人为延迟信号。
  • webgl-policy-check.py是可选的审核工具,并非常规渲染步骤。

参见实现与兼容性、浏览器后端和后端说明。

验证范围

在Android/proot aarch64平台上,使用Remotion 4.0.538和HyperFrames 0.8.198进行了验证:包括小数FPS、有音频和无音频合成、参数转发和同步检测。列出版本号是为了让读者了解尝试过的版本,而非作为支持版本的声明。

首次运行需要为每个候选、每轮、每个长度类进行一次探测渲染,因此其持续时间随候选数量和视频长度按比例增加;这是每个设备的一次性成本,后续运行会读取已记录的计划。rvc每次运行都会重新测量。自适应分段在解码帧总数相同的情况下,减少长视频的分段数量。任何运行产生的数据仅描述产生该数据的机器,并不保证其他设备的结果。

相关技能