前端实现录制 Web 网页

1,663 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情

想要实现在前端录制网页中的内容以及对网页做的各种操作,并且录制的内容在回放的时候可以点页面击进行交互,效果如下:

动画.gif

TimeCat实现

它的本质上不是一个视频,因为视频上播放的内容是不可操作的,但是它可以像真正的视频一样播放内容。它支持多种类型的页面录制,比如 PDF、文档、Echarts、多页面等。

image.png

网上可参考的 timecat 的使用教程并不是很多,所以结合开发过程中的体验来介绍一下实现的过程。

安装和引用

安装全部:

npm i timecatjs

或者也可以只安装用到的模块

npm i @timecat/recorder
npm i @timecat/player

引用:

import { Recorder, Player } from 'timecatjs';
// 局部引用
// import { Recorder } from '@timecat/recorder'
// import { Player } from '@timecat/player'

使用

  • Recorder 录制网站
    • 把浏览器操作过程中网页内部的所有变化映射成数据,包括 Canvas、DOM、Font、CSS、Audio 等不同类型的数据会分别进行处理
  • Player 播放录制内容
    • 将 Recorder 产生的数据渲染成一个网页,并生成动画,可以进行跳转,快进,导出,全屏等功操作(类似于真正的视频播放器)
this.recorder = new Recorder(); // 
this.recorder.destroy(); // 销毁Recorder,结束录制
this.player = new Player({
  target: '.player', // 播放器的容器,类型:string | HTMLElement
  records:event, // 播放的内容
  autoplay: true, // 自动播放
})
this.player.destroy(); // 销毁

生成一个 Player 后,页面的DOM 结构:

image.png

其它操作案例可参考官方文档:TimeCat 文档

image.png

除了上述的方法,rrweb 也是一种类似的解决方案,它提供了 record 和 replay 两个方法,record 会记录页面上 DOM 的变化,replay 会根据时间戳去还原记录好的 DOM 变化。