rrweb 录制数据转视频实战:rrvideo CLI 安装、配置与实现原理

发布时间:2026/11/11 8:18:19

rrweb 录制数据转视频实战:rrvideo CLI 安装、配置与实现原理 前端可观测性开发工具【免费下载链接】rrwebrecord and replay the web项目地址https://gitcode.com/gh_mirrors/rr/rrweb点击查看免费下载rrvideo 是 rrweb 官方提供的命令行工具负责把 rrweb 录制生成的 JSON 会话数据session events渲染为标准的 WebM 视频文件适用于无需交互回放的场景例如将录制结果分享到视频平台、作为 Bug 上报附件或进行自动化归档。读完本文你将掌握 rrvideo 的安装方式、三种常用 CLI 调用形态、完整的配置文件写法以及其基于 Playwright 无头浏览器与 rrweb-player 的底层渲染原理。rrvideo 在 rrweb 生态中的定位rrwebrecord and replay the web的核心思路是录制端把页面 DOM 变化、输入、滚动、鼠标交互等事件序列序列化为紧凑的 JSON 数据而非视频流回放端再按时间轴重建像素级画面。这种做法的优点是数据量小、便于检索与压缩但代价是无法在原生视频播放器、IM 或视频网站上直接播放。rrvideo 正是为解决这一闭环而生它在无头浏览器中启动 rrweb-player 对事件序列做一次真实回放同时用浏览器原生的 MediaRecorder 能力把回放过程录制成视频文件。官方文档 转换为视频 也明确把 rrvideo 列为将录制数据转为视频的推荐工具。从 package.json 可以看出它依赖playwright驱动无头浏览器、rrweb-player页面内回放器以及minimistCLI 参数解析三者共同构成了命令行入口 → 回放渲染 → 视频输出的完整链路。安装 rrvideorrvideo 以全局 CLI 形式发布在 npm 上安装需要两个前置条件安装 Node.js执行全局安装命令npm i -g rrvideo安装过程中需要注意rrvideo 的 package.json 中配置了install钩子脚本会调用playwright install下载 Playwright 所需的 Chromium 浏览器内核。如果当前环境无法联网下载浏览器如 CI 或离线环境可以通过环境变量跳过PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD1 npm i -g rrvideo安装完成后即获得rrvideo可执行命令对应package.json中bin: { rrvideo: build/cli.js }的声明。基本用法将 rrweb 会话转换为视频最简单的方式仅指定输入文件rrvideo --input PATH_TO_YOUR_RRWEB_EVENTS_FILE其中PATH_TO_YOUR_RRWEB_EVENTS_FILE指向一份 rrweb 录制导出的 JSON 文件事件数组。运行后rrvideo 会在当前执行目录下生成一个名为rrvideo-output.webm的视频文件。这一默认输出路径在 src/index.ts 的defaultConfig中有明确定义output: rrvideo-output.webm并且输入、输出相对路径都会基于process.cwd()解析为绝对路径。指定输出路径rrvideo --input PATH_TO_YOUR_RRWEB_EVENTS_FILE --output OUTPUT_PATH--output接受绝对路径或相对路径视频将写入指定位置若父目录不存在会报错源码中会提示 Cant create video file. Please check the output path.。若省略该参数则回退到默认的rrvideo-output.webm。通过配置文件定制回放rrvideo --input PATH_TO_YOUR_RRWEB_EVENTS_JSON_FILE --config PATH_TO_YOUR_RRVIDEO_CONFIG_FILE--config指向一个 JSON 配置文件用于控制回放细节。rrvideo 会读取该文件并把它作为 rrweb-player 的 props除events外传入回放器具体解析逻辑见 src/cli.tsargv.config分支。配置文件详解仓库中提供了官方示例配置文件 rrvideo.config.example.json完整内容如下{ width: 1400, height: 900, speed: 4, skipInactive: true, mouseTail: { strokeStyle: green, lineWidth: 2 } }这些字段在源码中的角色如下字段示例值作用width/height1400/900回放器目标画布尺寸像素。在 src/index.ts 中配置会被合并进 rrweb-player 的 props同时用于推导浏览器视口大小speed4回放倍速。该值不仅控制回放节奏还直接参与播放超时计算expectedPlaybackTime videoDuration / speed源码会据此设定播放时长 2 分钟缓冲的总超时避免长录制被固定超时误杀对应 CHANGELOG 2.0.0 的调整skipInactivetrue是否跳过页面无活动的时间段从而缩短视频长度、避免长时间静止画面mouseTail{strokeStyle: green, lineWidth: 2}鼠标轨迹尾迹样式strokeStyle为轨迹颜色lineWidth为轨迹线条宽度需要说明的是由于 rrvideo 将整个配置文件透传为 rrweb-player 的 props类型约束为OmitConstructorParameterstypeof Player[0][props], events见 src/index.ts因此 rrweb-player 支持的其他回放配置项如autoPlay、showController、showDebug等原则上也可写入该文件。不过 rrvideo 在渲染时会强制覆盖events为你的录制数据并强制showController: false、autoPlay: false先挂载 finish / progress 事件再手动play()以保证录制过程不受控制器 UI 干扰且进度可追踪。底层实现原理从 src/index.ts 的transformToVideo函数可以还原出完整的转换流水线大致分为五步读取并解析事件读取--input指向的 JSON 文件解析为eventWithTime[]事件数组若未提供--inputsrc/cli.ts 会直接抛出please pass --input to your rrweb events file错误对应 test/cli.test.ts 中的第一个测试用例。计算最大视口getMaxViewport遍历所有Meta类型事件取录制过程中的最大width/height作为回放画布尺寸基准确保不同分辨率下的页面内容都不被裁剪。画质缩放源码内置MaxScaleValue 2.5结合resolutionRatio取值范围 01默认0.8对视口做超采样放大即scaledViewport maxViewport * resolutionRatio * 2.5再用 CSStransform: scale(...)把回放画面缩放回目标尺寸。这种以高分辨率渲染后缩小的方式能显著提升视频清晰度同时在resolutionRatio的权衡下控制文件体积。无头浏览器录制以chromium.launch({ headless: config.headless })启动 Playwright 浏览器用browser.newContext({ viewport: scaledViewport, recordVideo: { dir, size } })开启视频录制页面加载一份动态生成的 HTML其中内联了 rrweb-player 的 UMD 脚本与样式路径由require.resolve(rrweb-player)推导随后new rrwebPlayer({ target: document.body, props: {...} })重建页面并play()。等待结束并落盘页面通过exposeFunction暴露onReplayFinish与onReplayProgressUpdate两个桥接函数前者在回放完成后触发 Promise 解析含基于播放时长的动态超时保护后者驱动 CLI 的进度条见 src/cli.ts 中ProgressBar的使用回放结束后把临时录制文件移动到--output指定路径并清理__rrvideo__temp__临时目录。视频录制期间页面上的报错pageerror与控制台输出console会被转发到终端便于定位回放异常。质量与结果验证仓库自带 CLI 的集成测试 test/cli.test.ts可直接印证上述行为不带--input运行时抛出please pass --input to your rrweb events file仅传--input时在仓库根目录生成rrvideo-output.webm同时传--input与--output时视频写入指定路径。测试数据 test/events/example.ts 展示了一份最小可用的 rrweb 事件结构包含DomContentLoaded、Load、Meta声明 1000×800 视口、FullSnapshot完整 DOM 快照以及IncrementalSnapshotMutation 增补 select 元素、Input 输入事件可作为你手工构造测试录制的参照模板——即一份可被 rrvideo 消费的 JSON 至少应包含 Meta 与 FullSnapshot再配合若干增量事件描述动态变化。使用建议与注意事项浏览器依赖rrvideo 依赖 Playwright 的 Chromium 内核安装时若跳过浏览器下载PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD1运行时需要单独确保浏览器可用否则会启动失败。长录制会转码较久转换是真实回放一次的过程视频时长与录制时长成正比受speed倍速影响超时上限为回放时长 2 分钟缓冲。输出格式默认输出为 WebMrrvideo-output.webm如需 MP4 等容器格式可在输出后自行转封装。文件体积控制resolutionRatio默认0.8是源码注释中质量与文件体积的权衡值追求更小文件可调低追求更高画质可调高最大 1。如需在浏览器内直接体验交互式回放而非转视频可参考 docs/recipes/index.zh_CN.md 下关于 rrweb-player 的文档二者在 rrweb 工作流中互补。综上rrvideo 用真实回放 浏览器录制的方式填补了 rrweb 事件数据与视频文件之间的鸿沟一条命令即可完成转换配置文件则让你在画质、尺寸、倍速与鼠标轨迹表现上拥有充分的定制空间。赞分享前端可观测性开发工具【免费下载链接】rrwebrecord and replay the web项目地址https://gitcode.com/gh_mirrors/rr/rrweb点击查看免费下载相关推荐rrweb 录制数据转视频实战使用 rrvideo 将会话回放导出为 WebM 视频rrweb 录制数据转视频实战使用 rrvideo 将会话回放导出为 WebM 视频 rrweb 的录制产物是一种高效、易于压缩的文本格式事件流回放时可达到前端可观测性开发工具rrweb 录制数据转视频实战使用 rrvideo 将会话回放导出为 WebM 视频rrweb 录制数据转视频实战使用 rrvideo 将会话回放导出为 WebM 视频 rrweb 的录制数据是高效的文本 JSON 格式可在浏览器中做像素级前端可观测性开发工具rrweb 跨域 iframe 录制实战原理、配置与四种注入方案rrweb 跨域 iframe 录制实战原理、配置与四种注入方案 本指南以 rrweb 官方配方文档 docs/recipes/cross origin if前端可观测性开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/11 21:40:49

深度强化学习实车部署实战:Sim2Real从仿真训练到落地避坑指南

简介:面向毕业设计与课程项目的深度强化实车部署教程资源,定位在帮助学习者理解PPO和SAC算法从仿真训练到实车部署的完整链路。压缩包共19个文件,约39.56MB,主体为6个Python源码脚本、8个模型权重文件(6个pth与2个pt&a…

2026/11/11 22:27:35

银河麒麟V10手动升级OpenSSH 9.x实操指南与避坑

1. 为什么要在银河麒麟V10上折腾OpenSSH升级银河麒麟V10(x86_64)这套系统,接触过的人都知道,它底层是Linux内核,包管理走的是RPM体系,但软件源里的OpenSSH版本往往停留在比较老的阶段。我这次接到的需求很直…

2026/10/30 4:07:03

Atlas 300V 24G推理卡部署YOLO全流程实战与环境避坑指南

Atlas这个词最近在AI圈子里刷屏频率不低,尤其Atlas 300V 24G这款卡,后台一直有人问:它到底算不算运算加速卡?能不能直接用来部署YOLO?部署过程折腾不折腾?这些问题我刚好在项目里都摸过一遍,今天…

2026/11/12 8:09:30

外省电工证能转过来吗?内部消息告诉你纸板电工证怎么考

外省电工证能转过来吗?内部消息告诉你纸板电工证怎么考 之前考的证在外省能不能转过来?这几乎是每个持证人心里的疑问,尤其是像南阳这样的应届工程类毕业生,刚刚步入职场,手里有个纸板电工证,可能就意味着多一份工作机会,少一份求职焦虑。但问题来了,…

2026/11/12 8:09:30

你考的电工证是哪种郑州报考避坑指南

你考的电工证是哪种郑州报考避坑指南 实操考试心里没底怕挂科?这是很多准备考电工证的朋友心里的真实想法。尤其是在郑州,越来越多的建筑、电力、维修等行业从业者开始关注特种作业证,尤其是电工证。但很多人对“你考的电工证是哪种”这个问题并不清楚,导…

2026/11/12 8:09:30

河北维修电工证查询良心建议:实操考试心里没底怕挂科?

河北维修电工证查询良心建议:实操考试心里没底怕挂科? 实操考试心里没底怕挂科?你不是一个人,很多在河北准备维修电工证考试的小伙伴都遇到过这种情况。尤其是安阳水利工程从业者,工作性质决定了必须持证上岗,但实操考试的流程、内容、评分标准却常常让…

2026/11/12 8:09:29

退役特种兵搬运工怎么报名特种作业证?实操考试心里没底怕挂科

退役特种兵搬运工怎么报名特种作业证?实操考试心里没底怕挂科 实操考试心里没底怕挂科,这事儿我懂,尤其是像你这种退役特种兵搬运工,虽然有部队经验,但特种作业证的考试内容和流程,跟部队训练可不一样。很多人在报名前都会担心自己能不能过,能不能顺利…

2026/11/12 8:04:29

孝感大悟电工证多久拿证?找工作的刚需怎么解决

孝感大悟电工证多久拿证?找工作的刚需怎么解决 你还在为没证耽误找工作发愁?尤其是像你这样急需特种作业证才能上岗的求职者,孝感大悟电工证成了你必须拿下的一张通行证。但你知道 多久拿证 、怎么高效拿到、考试难不难吗?别急,下面给你全盘托出。…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/12 0:04:01

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘 工地太忙根本没时间复习考试?你不是一个人。作为一名在南阳卧龙区干了七八年市政公用工程的电工,我深知这个问题的现实性。电工证不仅是工作的“入场券”,更是职业发展的“通行证”,但备考过程…

2026/11/12 0:04:01

双流电工证考别怕挂科!郑州报考避坑指南全攻略

双流电工证考别怕挂科!郑州报考避坑指南全攻略 实操考试心里没底怕挂科?双流电工证考在郑州报名,很多人因为不了解流程、准备不充分,白白浪费时间和金钱。作为三门峡应届工程类毕业生,我也曾经历过这样的焦虑。今天就从零开始,手把手教你如何避开郑州报…

2026/11/12 0:04:01

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少 之前考的证在外省能不能转过来?这个问题确实让不少准备换城市工作的朋友犯了难,尤其像电工证这种实操性很强的证书,很多人担心跨省后证书能不能继续用。其实,只要符合相关流程,是可以顺利转…

2026/11/11 20:27:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/10 10:29:37

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑