JITSI开源视频直播
徐景周
-
一、 引言
WebRTC被认为是一种点对点技术,浏览器可以直接通信而无需任何类型的基础设施。此模型足以创建基本应用程序,但难以在其之上实现诸如组通信、媒体流记录、媒体广播或媒体转码之类的功能。
-
二、 WebRTC
2.1 Mesh架构模式
下面是WebRTC Mesh(网格P2P)模式下,1对1的视频通讯如图一所示。
2.2 Mesh事件序列
如图二所示,Mesh模式下1对1模式下的事件序列图。其中,Coturn Server为开源的NAT穿透服务器(支持STUN/TURN/ICE);Signal Server为信令服务器(可采用开源的Collider/SkyRTC/SignalMaster);
2.3 WebRTC框架
如图三、图四所示。
-
三、WebRTC流媒体服务器
3.1 概述
WebRTC规范只定义了实时通信中客户端的行为,而没有规范服务端(包括哪些信令、数据如何流转)的行为。所以,你可以使用WebRTC库方便的实现1:1 实时通信,但对于多人实时互动,通常会使用WebRTC + 流媒体服务器的方案。WebRTC流媒体服务器类似“多媒体中间件”,从源到目的地时,媒体流量会通过该中间件。流媒体服务器能够处理媒体流并提供不同的类型,包括组通信(将一个对等方生成的媒体流分配给多个接收方),混合(将多个传入流转换为一个单一的复合流),转码(在不兼容的客户端之间适应编解码器和格式),录制(以持久的方式存储对等体之间交换的媒体)等。
如图五所示。WebRTC媒体服务器包括SFU(Selective Forwarding Unit,可选择转发单元),MCU(MultiPoint Control Unit,多点控制单元)或混合模式。
3.2 媒体流
如图六、图七所示。WebRTC由语音引擎,视频引擎和网络传输三大模块组成。其中,WebRTC音频处理(VoiceEngine)默认编解码是ISAC(Internet Speech Audio Codec),源码目录“/audio_coding”;视频处理(VideoEngine)默认采集与编解码是I420和VP8(源码目录“/video_coding”)。