场景demo落地 - 视频通话 2.0 ARCall

169 阅读10分钟

前几周我们发布的语音连麦demo受到了很多开发者的喜欢,同时留言希望我们再介绍一下有关视频集成的流程,所以这篇文章以我们开源的视频通话demo-ARCall
为参照进行示范讲解。

1. ARCall 简介

ARCall 是anyRTC自主研发的实时音视频沟通的示例项目,演示了如何通过 anyRTC云服务,并配合 anyRTC RTC SDK、anyRTC RTM SDK,快速实现呼叫邀请通话的场景。

目前支持:

  • 一对一视频呼叫。
  • 多人视频群聊
  • 一对一音频呼叫。
  • 多人音频群聊
  • 自采集:自采集功能的加入,支持屏幕共享、美颜、美声等前处理功能。
  • 自渲染:对安全比较高的,可采用自渲染功能,对音视频数据进行自定义加密。
  • 大小流:当会话人数比较多的时候,开启大小流,当小屏显示用户视频的时候,使用小流节省本地带宽,当大屏显示用户适配的时候,拉去大流进行高清显示,大小流可无缝切换。
  • 插入媒体流:当会话当中,使用插入媒体流可进行同时看电视节目(RTMP流),可以看监控进行协同处理事务(RTSP流)。
  • 播放音乐音效:当通话过程中,可以播放本地或在线音乐。
  • 上下行网络质量:通话质量实时回调,显示本地以及对方的通话质量,可以进行友好提醒。
  • 说话音量提醒:音量大小实时回调,可知晓频道中正在说话的用户,适合大频道多人音视频场景。
  • 50人上麦:一个频道最大支持50人同时上麦,观看人数不限制。

2. 核心功能介绍

视频通话最重要的一步就是进行呼叫邀请,这是是运行所有功能的前提条件,市面上运用呼叫邀请音视频通话的场景很多,下面简单介绍一下:

  • 陌生人交友,需要呼叫邀请通话,进行音视频通信。
  • 门铃系统,需要呼叫邀请房主,让房主应答。
  • 在线医疗,在线咨询,帮助患者快速、高效的解答救助事宜。
  • 智能调度,安保系统智能调度人员。

如何实现呼叫邀请

呼叫邀请的场景既然这么多,那市面上的这种场景是怎么做的呢?下面我们就来分析一下吧。

  • 利用市面上现有的IM SDK
    ,一般这种SDK都会有一套现有的逻辑帮助开发者去实现呼叫邀请的逻辑。但不好的一点是这种SDK非常笨重,包体积大,好多还自带UI,灵活性差。
  • 使用Socket 自行组织呼叫邀请逻辑,但是这种开发难度大,工期时间长,而且对应大并发、高可用显得力不从心。
  • 利用anyRTC 实时消息SDK,该SDK对呼叫邀请特别友好,包体积小,而且很轻便,调用几个API接口就把呼叫邀请的逻辑给搞定了。

RTM 实时消息组织呼叫邀请的逻辑分析

呼叫邀请的行为

  • 主叫发送呼叫邀请;
  • 主叫取消呼叫邀请;
  • 被叫接受收到的呼叫邀请;
  • 被叫拒绝收到的呼叫邀请;

API 时序图

取消已发送呼叫邀请

接受/拒绝呼叫邀请

呼叫当中异常处理流程

呼叫邀请发出后,调用subscribePeersOnlineStatus方法进行订阅对方的在线状态,根据peersOnlineStatusChanged回调信息来判断对方是否在线。被呼叫者做相同的操作,收到呼叫邀请,调用subscribePeersOnlineStatus方法进行订阅对方的在线状态,根据peersOnlineStatusChanged回调信息来判断对方在线情况与否。直到呼叫挂断后,都取消订阅对方的状态。

呼叫当中的推送对接

anyRTC RTM SDK中没有嵌入推送服务,需要客户自己去做推送服务,下面介绍一下客户端如何集成推送功能。

呼叫之前,订阅对方的状态,如果对方不在线,使用第三方推送服务,进行呼叫,然后发送sendLocalInvitation邀请,本地进入等待画面。

case1: 对方没有答应 发出邀请后,如果对方不应答,会在30s给予回到localInvitationFailure邀请失败回调,收到该回调后提示对方无应答。

case2: 对方有收到邀请 发出邀请后,被呼叫方收到推送消息,进行本地响铃,点击进入程序,登录RTM SDK,此时会收到remoteInvitationReceived的回调,弹出应答页面,进行相应的应答,呼叫方此刻也会收到localInvitationReceivedByPeer的回调,进行60s倒计时,如果60s后还未做出答复回应,取消呼叫请求,关闭页面。

客户端集成推送服务

极光、信鸽、个推、友盟,用户可以根据自己的情况调研集成。

RTC音视频通话

当呼叫连接建立后,双方协商好进入相同的频道号即可通信。

3. ARCall demo下载

用户可以直接扫码下载ARCall进行体验。

GitHub地址:github.com/anyRTC-UseC…

4. 应用场景介绍

下面为各位开发者介绍一下ARcall可以应用在现实中的哪些工作场景;

1、企业的内部通讯

同事与同事之间的单对单沟通,简单快捷。有时候需要很多人同事开会的时候但是大家都不在公司这样就可以选择多人语音或者多人视频来进行网络会议。这样不仅仅节省了等人的时间,还提升了沟通的效率。真正的做到了远距离沟通。

2、在线医疗

相信大家对于在线教育已经不陌生了,现在在线医疗也是在非常快速的的发展中,在线医疗可以缩短医生与患者之间的距离,省去去医院路上的时间,挂号的时间,提升医生的工作效率。就拿这次疫情来说,如果发现身体不是很舒服,但是去医院又不是很安全这时候选择和医生线上沟通是最安全省力方式,同样如果家中有老人的话,也是选择线上医疗是最方便的,因为老人相对来说去医院不是很方便,选择线上的话就节省了路程时间和挂号时间。

3、在线客服

相信大家都去银行办理过各种业务,银行要求的一定是本人要到现场才行的。但是有时候因为人在外地,或者工作比较忙没有办法抽出时间去银行办理业务,这时候在线客服的重要性就体现出来了,客服这边可以和用户约定好时间然后进行视频通话,这样一来银行可以判断是否为本人来办理业务,二来可以省去用户的交通时间,可以说是一举两得。

4、陌生人交友

随着互联网行业的发展各种各样的音视频聊天软件层出不穷,其实归根结底都是语音和视频通话。而ARCall适用于在线陪聊、心理疏导、狼人杀、在线K歌等多种场景。

5、智能终端

智能终端可应用于小区物业管理,智能手表、眼镜,无人机等设备上,通过音视频传输高效解锁,拨通电话等进行实时音视频通话。点对点的音视频通讯,可对智能终端实现自我控制、远程控制、好友管理、及影像等功能,可以远程遥控进行布防或者撤防,并记录下全过程。智能终端将极大地改变人们未来的生活图景,为我们的工作效率、生活便利性带来了极大的提升,成为我们生活中不可或缺的一部分。

6、一对一小班课

学校内部局域网沟通;视频家访;一对一教学;轻松实现跨区域交流互动。一对一在线教育模式也是具个性化的,可以全方面把控教学过程。一对一在线教育因材施教,全方位为学生制定学习计划,从而更具针对学生的特质并对症下药。更重视学习方法,为学生营造了一种全新的学习氛围,通过相互感染,使学生在学习过程中产生学习的动力和强烈的学习意识,让学生更加关注学习。

7、视频面试

因为疫情的影响,视频面试已经成为一种面试洽谈的安全、可靠、快捷的方法之一了,可创建一个纯净的一对一音视频对话的环境。用人单位与求职者足不出户利用连通了互联网的电脑,通过视频摄像头和耳麦进语音、视频、文字的方式进行即时沟通交流的招聘和面试。这种面试方式可以极大地节省面试双方的时间和费用,并且提高面试工作的效率。视频面试可以轻易地延伸到世界的每一个角落。无论求职者在哪个地方或哪个国家通过视频就可以快速双方进行沟通。视频招聘是一个跨时空的互动过程,对供求双方而言都是主动行为。这种积极的互动,减少了在招聘过程中的盲目行为。

5. ARCall的优势

anyRTC是一个服务于互联网音视频领域的品牌,致力于给用户带来流畅的视听效果。音视频呼叫Demo—ARCall,结合了实时消息RTM与音视频SDK,快速实现一对一及多人呼叫接通服务,仅需用手机打开对应APP,或PC端打开链接拨号即可接通,可实现多平台互通。

ARCall虽然看起来只是一个音视频通话的软件,但是生活中与你相关的很多场景都是和ARCall有联系的,所以你可以大胆的发散你的思维,把它应用在日常的工作生活中。

6. 跨平台视频通话

跨平台开发一直都是这几年最重要的技术趋势之一。跨平台的框架每年都在更新,但是热度却从未降低。采用跨平台开发技术让软件开发者几乎可以用同一套代码就为不同平台构建应用程序,节省了时间、人力,以及不必要的工作。anyRTC新增了uni-app移动端插件和Flutter移动端插件,保证了跨平台也可以实现实时的音视频通话。

  • uni-app移动端插件

anyRTC uni-app移动端插件目前适配了RTC和RTM SDK。uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS、Android、H5、小程序等多个平台。因为扩展能力强,学习成本低,所以深受开发者们的喜爱。

uni-app 跨平台SDK应用场景非常广泛,比如在在线教育、在线金融、智能终端、移动执法和交通物流方面都有良好的应用。

anyRTC uni-app RTC SDK 集成指引及示例DEMO

参考地址:github.com/anyRTC/uni-…

anyRTC uni-app RTM SDK 集成指引及示例DEMO

参考地址:github.com/anyRTC/uni-…

  • Flutter移动端插件

anyRTC Flutter移动端插件目前适配了RTC和RTM SDK,开发者基于anyRTC Flutter SDK可以简单高效的实现跨平台音视频和实时消息功能。

Flutter是Google一个新的用于构建跨平台的手机App的SDK。写一份代码,在Android 和iOS平台上都可以运行。Flutter的优势是具备快速开发、富有表现力和灵活的UI、以及原生性能。

anyRTC Flutter SDK 集成指引及示例DEMO

参考地址:github.com/anyRTC/Flut…

anyRTC考虑到了用户的应用创建了实时消息Flutter-RTM

参考地址:github.com/anyRTC/Flut…

到目前为止anyRTC全平台覆盖,支持Windows、macOS、Android,iOS、Web、小程序等多平台覆盖、支持Flutter、APICloud、uni-app、Electron跨平台开发。