随着4G的普及和5G技术的应用,实时音视频技术正在蓬勃发展。实时通信技术已经渗透到各行各业,支撑着人们的日常生活。在互联网领域,花椒、映客等直播平台吸引了大量的用户;在教育领域,通过实时直播技术搭建的“空中课堂”惠及全球数亿学生;在医疗行业,随着电子处方单纳入医保,互联网看病、复诊正在兴起,地域之间医疗资源不均衡的问题被实时直播技术逐步消除。
在WebRTC诞生之前,实时通信技术非常复杂,想获得核心的音视频编码及传输技术需要支付昂贵的专利授权费用。此外,将实时通信技术与业务结合也非常困难,并且很耗时,通常只有较大规模的公司才有能力实现。
WebRTC的出现使实时通信技术得以广泛应用。WebRTC制定、实现了一套统一且完整的实时通信标准,并将这套标准开源。这套标准包含了实时通信技术涉及的所有内容,使用这套标准,开发人员无须关注音视频编解码、网络连接、传输等底层技术细节,可以专注于构建业务逻辑,且这些底层技术是完全免费的。WebRTC统一了各平台的实时通信技术,大部分操作系统及浏览器都支持WebRTC,无须安装任何插件,就可以在浏览器端发起实时视频通话。
什么是WebRTC
WebRTC(Web Real-Time Communication)是一个谷歌开源项目,它提供了一套标准API,使Web应用可以直接提供实时音视频通信功能,不再需要借助任何插件。原生通信过程采用P2P协议,数据直接在浏览器之间交互,理论上不需要服务器端的参与。“为浏览器、移动平台、物联网设备提供一套用于开发功能丰富、高质量的实时音视频应用的通用协议”是WebRTC的使命。
WebRTC技术最初为Web打造,随着WebRTC自身的演进,目前已经可以将其应用于各种应用程序。
WebRTC的技术架构
从技术实现的角度讲,在浏览器之间进行实时通信需要使用很多技术,如音视频编解码、网络连接管理、媒体数据实时传输等,还需要提供一组易用的API给开发者使用。这些技术组合在一起,就是WebRTC技术架构,如图1所示。
WebRTC技术架构的顶层分为两个部分:
一部分是Web API,一组JavaScript接口,由W3C维护,开发人员可以使用这些API在浏览器中创建实时通信应用程序。
另一部分是适用于移动端及桌面开发的libwebrtc,即使用WebRTC C 源码在Windows、Android、iOS等平台编译后的开发包,开发人员可以使用这个开发包打造原生的WebRTC应用程序。
第二层是WebRTC C API,它是Web API和libwebrtc的底层实现。该层包含了连接管理、连接设置、会话状态和数据传输的API。基于这些API,浏览器厂商可以方便地加入对WebRTC的支持。WebRTC规范里没有包含信令协议,这部分需要研发人员依据业务特点自行实现。
WebRTC支持的音频编码格式有OPUS和G.711,同时还在音频处理层实现了回音消除及降噪功能。WebRTC支持的视频编码格式主要有VP8和H264(还有部分浏览器支持VP9及H265格式),WebRTC还实现了Jitter Buffer防抖动及图像增强等高级功能。
在媒体传输层,WebRTC在UDP之上增加了3个协议。
■数据包传输层安全性协议(DTLS)用于加密媒体数据和应用程序数据。
■安全实时传输协议(SRTP)用于传输音频和视频流。
■流控制传输协议(SCTP)用于传输应用程序数据。
WebRTC借助ICE技术在端与端之间建立P2P连接,它提供了一系列API,用于管理连接。WebRTC还提供了摄像头、话筒、桌面等媒体采集API,使用这些API可以定制媒体流。
如何学习WebRTC技术?
WebRTC技术包含了音视频编解码技术、传输技术、流媒体服务器技术等,涵盖了音视频处理和传输的方方面面。这些技术中任意一个都能成为独立的课题,都值得花大量时间深入研究。除此之外,理解WebRTC相关API,还必须掌握现代Web技术,尤其是ES6、Promise等语法知识。可见,学习WebRTC技术需要掌握大量的预备知识,这对于初学者来说有一定的门槛。
《WebRTC技术详解:从0到1构建多人视频会议系统》是一本能够降低国内技术人员使用WebRTC的门槛,帮助研发人员更好地将WebRTC技术应用到产品中的书。本书系统地涵盖WebRTC的技术内容,剥离层层技术面纱,将WebRTC以一种易于理解的形式完整呈现给国内技术人员。
本书特色
■全面涵盖WebRTC 1.0规范。
■详细讲解WebRTC底层技术。
■结合示例演示WebRTC API的使用。
■从零起步实现高效、实时的信令系统。
■使用WebRTC技术从0到1打造开源视频会议系统。
作者介绍
栗伟
资深音视频技术专家,在该领域有多年实践经验,对WebRTC有非常深入的研究。曾任职于中科院计算所、CC视频,任职期间利用WebRTC技术开发了直播、在线课堂、视频会议等商业产品,并发用户数达到500万。开源社区的积极参与者,在GitHub上开源了视频会议项目WiLearning,免费供中小企业使用。