最近工作中有一个需求:

  • 客服坐席可以和用户一对一开视频,类似于一对一开微信视频。
  • 同时要求在坐席这边能够进行实时语音识别。

属于技术演示,经过简单的沟通,找到了市面上存在的技术方案:WebRTC ,最终选用了 腾讯云提供的 TRTC 服务。

历史

不赘述,看 Why WebRTC|前世今生

补充:https://rtcdeveloper.com/ 是声网出的社区网站。

概念

WebRTC (Web Real-Time Communication) 是一个可以用在视频聊天,音频聊天或P2P文件分享等Web App中的 API。

WebRTC主要由以下几个部分组成:

  • getUserMedia 为一个RTC连接获取设备的摄像头与(或)麦克风权限,并为此RTC连接接入设备的摄像头与(或)麦克风的信号。
  • RTCPeerConnection 用于配置音频或视频聊天。
  • RTCDataChannel 用于设置两个浏览器之间的端到端 (en-US) 数据连接。

内容来自 https://developer.mozilla.org/zh-CN/docs/Glossary/WebRTC

现状

该技术的限制 :

image.png
移动端网页版没法用,好在有小程序托底,But小程序需要企业资质:

  • 小程序推拉流标签不支持个人小程序,只支持企业类小程序。
  • 小程序推拉流标签使用权限暂时只开放给有限 类目

因此演示阶段,只能在 桌面端使用chrome来做演示,需要调用摄像头、麦克风。

如果能接受以上的限制,就剩下的就是开始准备demo了。

第三方服务

目前各大云厂商都提供了,比如 腾讯云实时音视频Tencent Real-Time Communication,TRTC。

价格能接受,不贵:

image.png

服务本身有多种分类:

直播、互动直播、实时音视频以及旁路直播有什么区别和关系?

  • 直播(关键词:一对多,RTMP/HLS/HTTP-FLV,CDN)
    直播分为推流端、播放端以及直播云服务,云服务使用 CDN 进行直播流的分发。推流使用的是通用标准的协议 RTMP,经过 CDN 分发后,播放时一般可以选择 RTMP、HTTP-FLV 或 HLS(H5 支持)等方式进行观看。
  • 互动直播(关键词:连麦、PK)
    互动直播是一种业务形式,指主播与观众之间进行互动连麦,主播与主播之间进行互动PK的一种直播类型。
  • 实时音视频(关键词:多人互动,UDP 私有协议,低延时)
    实时音视频(Real-Time Communication, RTC)主要应用场景是音视频互动和低延时直播,使用基于 UDP 的私有协议,其延迟可低至100ms,典型的场景就是 QQ 电话、腾讯会议、大班课等。 腾讯云实时音视频(TRTC)覆盖全平台,除了 iOS/Android/Windows 之外,还支持小程序以及 WebRTC 互通,并且支持通过云端混流的方式将画面旁路直播到 CDN。
  • 旁路直播(关键词:云端混流,RTC 旁路转推,CDN)
    旁路直播是一种技术,指的是将低延时连麦房间里的多路推流画面复制出来,在云端将画面混合成一路,并将混流后的画面推流给直播 CDN 进行分发播放。

可以看出,我们需要的是 实时音视频 WebRTC,因为我们的要求是 一对一、低延时。实时场景中也提到了 QQ电话。