前言
WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。anyRTC在 WebRTC 的基础上,凭借多年开发经验并结合实际情况,开发了 基于WebRTC的音视频通讯云平台,提供互动教学、连麦直播、视频会议、指挥调度等多种音视频跨平台解决方案。
WebRTC历史
2010年5月,Google以6820万美元收购VoIP软件开发商Global IP Solutions的GIPS引擎,并改为名为“WebRTC”。WebRTC使用GIPS引擎,实现了基于网页的视频会议,并支持722,PCM,ILBC,ISAC等编码,同时使用谷歌自家的VP8视频解码器;同时支持RTP/SRTP传输等。
2012年1月,谷歌已经把这款软件集成到Chrome浏览器中。同时FreeSWITCH项目宣称支持iSAC audio codec。
WebRTC核心API
WebRTC原生APIs文件是基于WebRTC规格书撰写而成,这些API可分成Network Stream API、 RTCPeerConnection、Peer-to-peer Data API三类:
Network Stream API
MediaStream:MediaStream用来表示一个媒体数据流。
MediaStreamTrack在浏览器中表示一个媒体源。
RTCPeerConnection
RTCPeerConnection:一个RTCPeerConnection对象允许用户在两个浏览器之间直接通讯。
RTCIceCandidate:表示一个ICE协议的候选者。
RTCIceServer:表示一个ICE Server。
Peer-to-peer Data API
DataChannel:数据通道(DataChannel)接口表示一个在两个节点之间的双向的数据通道。
WebRTC对IT基本架构的好处
TCO WebRTC是借助于网页浏览器工作的,所以不需要单独的音频设备,或者连入专用交换机的IP/模拟电话及软件电话。传统上,曾经使用的是实体电话,但是维护它们需要很大的开销。而且,与维护实体电话的钱已经加在了越来越多的基础架构的预算中。当WebRTC发明之后,以上所有的开销都减少了。当你使用WebRTC的时候,完全不用进行安装,维护,或者支持工作,音频通道仅仅是你UI的一部分。WebRTC还能让你的业务员进行远程登录。
ad-hoc扩展 通常,基础框架团队需要一整个月的辛苦工作和很多开销来上线一个联络中心。但是有了WebRTC,同样的一个联络中心想要上线只需要用不到一周的时间。这也会帮助那些组织以及初创公司在各种地区部署工作人员,而且不需要再音频设备上投资时间和金钱。
网络及带宽使用和安全 WebRTC支持多种媒体格式及终端,这可以帮助在你的工作人员和服务器之间提供最好的音视频通信。WebRTC使用Opus音频编解码器,专家说这个基于Skype SILK 编解码技术的codec是最好的音频解码器。Opus代码支持支持所有带宽,窄带,宽带,超宽带,和全频带。这意味着WebRTC比人耳分辨声音的能力要更强。
WebRTC音频引擎整体架构
在内部实现上,音频引擎VoiceEngineImpl通过一系列对象来实现音频处理,包括VoEAudioProcessingImpl、VoECodecImpl、VoENetworkImpl等等,每个对象负责具体某方面功能,例如VoEAudioProcessingImpl负责调用底层AudioProcessing模块对音频数据进行预处理。在这些功能对象中,比较重要的有VoEBaseImpl、SharedData和Channel。其中VoEBaseImpl是连接音频设备AudioDevice和音频引擎VoiceEngineImpl的纽带,是音频数据流水线上的重要一站;SharedData是一个聚合类,持有一系列重要对象;Channel则代表一路音频数据,负责大部分对该路数据的重要操作,包括音频数据的前处理、编解码、发送和接收、后处理、混音等等。
从功能依赖上讲,VoiceEngineImpl依赖五个重要的底层功能模块:音频数据采集和播放AudioDeviceModule 、音频数据预处理AudioProcessing、音频数据编解码AudioCodingModule、接收端音频数据缓冲区NetEq、接收端混音AudioConferenceMixer。此外音频数据编解码还依赖一系列音频编解码器如G711、G722、Opus等等。在发送端,音频数据由AudioDevice采集得到,经过AudioProcessing预处理后,到达AudioCodingModule进行编码,然后由RTPRTCP模块发送到网络。在接收端,音频数据经过RTPRTCP模块接收后到达AudioCodingModule,存储在NetEq中进行抖动控制和错误消除,然后解码。解码后的数据经过AudioConferenceMixer进行混音,最终发送到AudioDeviceModule进行播放。
从整个WebRTC框架结构来看,音频引擎和和视频引擎都位于比较底层的位置,负责音视频数据的采集、编解码、渲染播放等工作。音视频引擎的上一层是多媒体引擎WebRtcMediaEngine2,是对底层音视频引擎VideoEngine的进一步高层抽象,由WebRtcVoiceEngine对VoiceEngine进行封装,WebRtcVideoEngine2对VideoEngine进行封装。
anyRTC音视频通讯云平台SDK哪些使用场景用到WebRTC?
1、在线教育
ArRoomEngine SDK,基于谷歌WebRTC开放标准打造,超低延迟、全终端覆盖,可以满足各类需求,支持大班课、小班课,提供白板功能,免费试用。
2、视频会议
RTMeetEngine SDK,高清流畅的音视频、高安全性、全平台运行、丰富的会议管理功能,支持视频、语音多人会议,适用于会议、培训、互动等多人移动会议。
3、指挥调度
RTMaxEngine SDK,高清流畅的音视频、超低延时、指挥有力、资源保障等全面协调的的视频通讯指挥平台,实现现场应急与后方应急指挥中心的实时视频通讯、同步传输、精准调度、各级高效协同。适用于安防监控、智能家居。
4、互动连麦
RTMPCHybirdEngine SDK基于RTMP和RTC混合引擎的在线视频连麦互动直播。iOS 直播(网络自适应码率RTMP publisher)、点播播放器(播放器经过专业优化,可实现秒开RTMP Player)、基于RTMP 和RTC 混合引擎的的视频连麦互动(最多支持四路连麦互动),适用于游戏直播、美女秀场。
5、语音通话
RTCP2PEngine SDK,支持视频、语音、优先视频等多种呼叫模式,适用于网络电话、活动、教育等多种呼叫场景。
6、实时直播
RTCPEngine SDK,实现快速实时直播,相比RTMPC更加快捷,超低延时、极简API接口、超快接入。适用于在线娃娃机、智能硬件、在线医疗、 视频招聘、相亲交友等多种场景。