我们为很多实时互动场景提供了服务。在一些场景中,用户不仅需要实时互动,还需要把互动的过程录下来。那么一个好的录制解决方案究竟需要具备哪些特征呢?

在回答这个问题之前,先聊一下客户使用录制的原因。一般来讲,用户使用录制功能的原因主要有三种:

1. 质检。比如在教育场景下,需要通过回放录制来检查课程质量,在社交直播或金融双录场景下,需要保留录制视频,做合规性审查。

2. 留证。如教育、医疗、音视频客服等场景,需存档留证以应对可能的纠纷。这种场景下,对录制方案的核心诉求是内容完整性,不能容忍哪怕是秒级的视频丢录。

3. 回放。比如在教育场景、直播场景下,用户希望观看回放。这也是大多数实时互动场景里使用录制的主要原因。

那么在这种场景下,怎样才算是一个好的录制解决方案呢?

可以从五个维度来衡量录制方案:

  • 录制效果:需要还原真实的互动场景,包括音视频、课件、白板、聊天信息等所有元素。同时,不能对主播音视频互动体验造成任何负面影响。

  • 集成难度:越简单越好,最好是不需要开发。

  • 等待时长:等待时长越短越好,最好是录制结束后可以立即回放。

  • 文件兼容性:任何平台、任意浏览器都可以播放。

  • 文件迁移的便利性:文件下载、上传等迁移过程要非常简单,便于录制文件管理。

为了解决各种场景的录制需求,目前有两种比较主流的方案。

一、音视频、白板等元素分别录制,然后拼接回放

主要思路是将音视频、白板、课件、PPT、聊天内容等分别录制下来,录制结束后再分别回放,并通过时间戳对齐播放进度。这种方案的好处是,白板、课件、聊天内容等均以数据形式回放,可以保留原有的真实互动效果,例如 PPT 可以单独翻页,灵活性较好。但其缺点也非常明显:

1. 集成难度大。需要同时开发音视频录制、白板录制、聊天内容的录制,特别是各不同元素需要通过时间戳对齐回放,要做到非常好的同步效果需投入较多开发精力。

2. 播放兼容性受限。这种方式只能通过特殊播放器来回放,无法很好地兼容主流播放器。

3. 等待时间长。为了解决播放兼容性问题,往往需要在录制结束后进行离线处理,转成一个完整的 MP4 文件,这个过程等待时间较长,还会带来额外的转码成本。

二、本地客户端录屏

不管是本地客户端录制,还是通过屏幕共享将屏幕流发送到云端进行录制,其本质都是在用户的本地客户端上捕获屏幕内容。这种方案的好处是所见即所得,回放效果跟真实互动场景可以保持一致。但其缺点也是相当明显:

1. 影响本地用户的 RTC 互动体验。本地捕获屏幕内容会极大地消耗终端设备的计算资源,如果要实时上传,还会占用主播上行的带宽资源,这些都会影响本地用户的音视频通话体验甚至会出现卡顿、模糊等严重的后果,这对一个实时互动场景来说是难以接受的致命缺陷。

2. 集成难度大。开发者需要在端上进行开发,需要解决文件本地存储、上传等问题,往往还需要处理复杂的混音问题,集成门槛非常高。

除了以上两种主流思路,是否还有其他更好的方案呢?

声网Agora提出了第三种新思路:页面录制

页面录制是指通过 Web 页面渲染的方式, 在服务端同步录制音视频、白板、课件以及聊天信息等,还原真实的互动场景。其原理是:开发者通过 RESTful API 发起录制请求,并将待录制页面的 URL 以请求参数的形式发给 Agora 录制服务,Agora 录制服务会打开该Web页面,并以录屏的方式实时录制生成 MP4 文件,上传至指定的第三方云存储平台。具体 页面录制 文档,可点击「阅读原文」浏览。

根据此前录制方案判断维度,将页面录制与此前我们列举的录制方案相比:

  • 在集成上,通过Restful API发起请求录制,简单易用。

  • 录制效果实现所见即所得的,将音视频、白板、课件以及聊天信息等内容全部同时录制下来,且不带来额外的带宽、性能开销,录制过程不影响任何主播/观众的RTC互动体验。

  • 录制结束后,可以实时生成MP4文件,兼容各主流播放器。

  • 文件下载非常简单,便于录制文件管理。

同时,页面录制具备录制任意网页页面的能力,所以用 WebRTC 或其它方案自研 RTC 功能的开发者同样可以使用。

页面录制服务上线:RESTful API 调用实现,所见所录即所得的更多相关文章

  1. 初见微服务之RESTful API

    1. REST名称由来 REST全称为Representational State Transfer,即表述性状态转移,最早由Roy Feilding博士在世纪之交(2000年)提出,喜欢追根溯源的朋 ...

  2. Restful Api调用工具类

    RestfulHttpClient.java package pres.lnk.utils; import com.fasterxml.jackson.databind.ObjectMapper; i ...

  3. 人人都是 API 设计师:我对 RESTful API、GraphQL、RPC API 的思考

    原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. 有一段时间没怎么写文章了,今天提笔写一 ...

  4. Restful API 指南

    作为软件开发人员,我们大多数人在日常生活中使用或构建 REST api.API 是系统之间的默认通信方式.亚马逊是如何有效地使用 api 进行通信的最佳例子. 在这篇文章中,我将讨论如何更好地设计 R ...

  5. 探讨Morest在RESTful API测试的行业实践

    摘要:在本文中,我们将重点探讨使用自动化智能化Morest测试技术在RESTful API测试的行业实践. 本文分享自华为云社区<[智能化测试专题]华为云API智能测试工具--Morest测试框 ...

  6. 基于轻量型Web服务器Raspkate的RESTful API的实现

    在上一篇文章中,我们已经了解了Raspkate这一轻量型Web服务器,今天,我们再一起了解下如何基于Raspkate实现简单的RESTful API. 模块 首先让我们了解一下"模块&quo ...

  7. Web服务器Raspkate的RESTful API

    基于轻量型Web服务器Raspkate的RESTful API的实现 在上一篇文章中,我们已经了解了Raspkate这一轻量型Web服务器,今天,我们再一起了解下如何基于Raspkate实现简单的RE ...

  8. 如何用Baas快速在腾讯云上开发小程序-系列3 :实现腾讯云COS API调用

    版权声明:本文由贺嘉 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/640268001487425627 来源:腾云阁 h ...

  9. Restful api 防止重复提交

    当前很多网站是前后分离的,前端(android,iso,h5)通过restful API 调用 后端服务器,这就存在一个问题,对于创建操作,比如购买某个商品,如果由于某种原因,手抖,控件bug,网络错 ...

  10. 测试RESTful API利器-Postman

    对于前端开发者而言,最需要的往往不是技术本身,其实技术都没什么难的,而最缺少的则是各种各样好的兵器,比如调试,开发工具等等. 我们这里就推荐一款前端开发的利器-Postman,它是Google Chr ...

随机推荐

  1. 端口被占用 for mac

    启用项目提示端口被占用 解决方案: lsof -i : 3010 杀死占用的进程 kill -9 4804 重新启动

  2. 解决vuex“状态管理调用报错”报错为:"Uncaught ReferenceError: mapactions is not defined"

    报错: 源码: <script> import Vuex from 'vuex'; import {mapActions,mapGetters} from 'vuex'; // conso ...

  3. WEB攻击与防御技术 pikachu——关于暴力破解

    首先打开XAMPP 然后在网上下载pikachu平台压缩包 解压缩即可.之后进入到XAMPP的文件夹 将pikachu文件夹放到htdoces内就完成了pikachu平台的搭建~ 之后在xampp中点 ...

  4. 移动APP测试要点

    一. UI测试 (1) 页面布局 ① 页面布局合理且友好,符合用户习惯 ② 列表型界面有滚动条 ③ 功能入口明显,容易找到 (2) 图形测试 ① 图片大小合适且清晰 ② 页面字体与风格一致 ③ 背景颜 ...

  5. maven父子项目,由于pom文件中的<packaging>pom</packaging>导致报数据源配置错误

    啊啊啊~~~ 又是踩坑的一天!!! 我在子模块中进行开发,然后子模块的pom文件中也写了<packaging>pom</packaging>导致报数据源配置错误.具体内容如下图 ...

  6. Java 基础(二)

    类的初始 类中包括:属性,方法. 快速使用 我们都是人,而人的共同特点有很多. 比如:名字,年龄,性别,吃饭,睡觉... // 定义类 public class Person { // 定义属性 St ...

  7. 5.26 学习SSH

    1.ssh客户端是一种使用Secure Shell协议 连接到运行了ssh服务端的远程服务器上 ssh是比较可靠的,专为远程登录会话和其他网络服务提供安全性的协议 2.

  8. react复制文案到剪切板

    这里使用别人写好的插件. 1.安装要用到的插件:copy-to-clipboard: 2.导入: import copy from 'copy-to-clipboard'; 3.使用: copy(co ...

  9. protobuf协议 待整理

    https://blog.51cto.com/wangjichuan/5691192 https://blog.csdn.net/lizhichao410/article/details/126032 ...

  10. Unity C#代码入门

    Unity C#代码入门 1. 脚本基本结构 1.1 unity生成的模板 using System.Collections; using System.Collections.Generic; us ...