APP下载

基于WebRTC的P2P语音视频通信设计

2020-09-10闫新惠

新教育论坛 2020年6期
关键词:设计

摘要:P2P是指网络上双方直接连接通信,不经过中间服务器中转的技术。P2P有很多应用,最常见的bittorrent和eDonkey下载就是使用P2P技术。双人语音视频通信的场景特别适合采用P2P技术,无需服务器,延迟快,实时性强,安全性也可得到保障。WebRTC是一个开放源码的语音视频通信框架,其提供P2P语音视频通信的基本功能,通过此框架可以方便快速的搭建自己的视频软件。本文介绍了基于WebRTC实现的视頻通信技术。

关键词:WebRTC;P2P;语音视频通信;设计

1.WebRTC技术与主要对象

1.1.MediaDevices设备对象

用来操作音视频设备的对象,提供高度的抽象化,主要方法为getUserMedia,可以返回一个MediaDevices设备对象,并通过它获取MediaStream流对象,这是音视频流的抽象接口。通过给getUserMedia传入不同参数可以控制打开的具体设备,例如手机前后摄像头,PC内置mic;外接mic/usb mic;外放喇叭或耳机等等。对于找不到的设备有对应异常对象处理。

1.2.RTCPeerConnection连接对象

RTCPeerConnection连接对象代表一个与远端设备WebRCT连接的一个对象。WebRTC的底层连接可以基于多个协议,例如UDP或WebSocket,但是这里API已经完全封装,上层不关心具体连接底层协议。

连接的双方之间通过交换SDP(Session Description Protocol)来交换获取对方媒体信息,以确定一个双方都能接受的多媒体协议。RTCPeerConnection的createOffer与createAnswer方法会返回一个RTCSessionDescriptionInit字典,其中包含了PeerConnection的SDP信息。连接建立后便可以通过此连接传输音视频数据。

RTCPeerConnection连接的建立过程如图2所示:

1.3.RTCDataChannel数据频道

RTCDataChannel接口代表了用于点对点数据传输的双向信息通道,它是RTCConnection连接对象的更上层封装,每一个RTCDataChannel都和一个RTCPeerConnection相结合,但一个连接可以同时含有多个DataChannel,理论上限制最多能有65535个DataChannel,实际情况则取决于浏览器和具体设备)。

多个RTCDataChannel实际上复用了一个RTCConnection连接,类似于多路复用的概念,就像马路划分多个车道一样,这样在一个连接里存在多个通道,语音视频文本等数据可以分开传输,互相影响比较少。

2.应用程序

基于WebRTC构造应用比较简单,首先需要一个公网服务器提供NAT网络地址转换服务。服务端NAT穿透程序有RFC标准方案:ICE,ICE同时支持基于UDP的STUN协议和基于TCP

的TURN协议,并且能根据不同网络环境而选择最高效的连接方式。WebRTC中RTCConnection对象完全实现了ICE方案,所以一旦RTCConnection对象建立成功,则表示ICE连接成功。

3.总结

本文介绍了P2P技术和基于此的WebRTC框架,重点分析了WebRTC中的3个重要对象。依靠这些技术,可以方便的建立音视频通信的软件,我们提供一个示例构建基于WebRTC的应用程序。

作者简介:闫新惠(1974-),女(汉),山东省泰安市人,讲师,硕士,主要研究方向为计算机网络技术。

猜你喜欢

设计
BUBA台灯设计
有种设计叫而专
陈国兴设计作品
匠心独运的场地设计画上完美句点
跨越式跳高递进与分层设计
设计之味