WebRTC主要分为四部分,分别是信令、建立连接、安全加密、数据传输:
信令是指通信两端基于交换的数据进行协商。是在互联网中两个浏览器之间如果要进行点对点的数据传输,连接双方需要交换对方的一些基本信息,基本信息包括对方的地址,带宽,数据的编解码格式,是否支持音视频等等信息。
通信双方通过信令完成基本信息交换后,浏览器双方开始建立连接。在网络中,浏览器双方可能在同一个内网,可能不在同一个内网,中间可能还隔着交换机、路由器,还会存在防火墙。在网络的环境复杂的情况下,通信的双方需要到一条最佳路径传输数据建立连接。建立连接主要使用的协议就是ICE协议。ICE协议又需要依赖STUN协议和TURN协议。STUN协议功能主要是探测主机的公网IP和端口。TURN协议是一个转发数据的中继服务器。ICE协议被称为交互式连接建立协议,主要用于NAT穿透,建立通信两端的多媒体数据流。ICE协议的基本思路是获取一系列可以访问的终端的网络地址,按照优先级发出UDP请求进行探测,如果探测成功,就使用此地址作为数据传输的地址。
WebRTC使用DTLS协议(Datagram Transport Layer Security)来加密媒体流。DTLS是TLS(Transport Layer Security)协议的一个变体,它在不稳定的网络中提供端到端的加密。DTLS在传输UDP数据包时提供加密保护,以确保数据的机密性。使用DTLS加密后的媒体流是无法被中间人窃听的。使用 SRTP 协议(Secure Real-time Transport Protocol)来保
护媒体流的完整性和来源。SRTP 通过在媒体流上添加数字签名来实现鉴别。这些数字签名使用 HMAC(Hash-based Message Authentication Code)算法生成,以确保媒体流的完整性和来源。
Janus 是开源的WebRTC流媒体服务器,支持在Linux的服务器进行编译和安装。Janus 的整体架构图如下图所示。
webrtc浏览器Core:Janus的核心部分,其作用是处理数据流的转发,以及各种协议的接入,是WebRTC技术的具体实现。
Plugin:Janus的插件,Janus的业务管理是按照Plugin的方式管理的,因此开发者可以在Janus中根据自己的需要实现自己的业务插件。实际上,对于一般性的需求,Janus已经有相关的插件。其中,可使用 VideoRoom视频房间插件进行多人音视频互动。
Transport:Janus的信令传输层,Janus并没有限定信令接口使用的信令传输协议,支持的协议有HTTP、WebSocket、MQTT、NanoMsg和RabbitMQ。
前端实现:使用Vue框架来构建用户界面。Janus有自己的JavaScript API,可以通过它与Janus服务器进行通信。
1.创建会话,绑定videoroom插件流程:
2.创建房间
3.作为发布者进入房间
4.更改聊天设置(麦克风和摄像头开关)流程:
{
"request":"configure",
"audio":<true | false,是否转发音频;默认为true>,
"video":<true | false,是否转发视频;默认为true>,
"bitrate":<比特率上限;可选,如果存在则覆盖全局房间值(除非设置了bitrate_cap)>,
"filename":"<如果开启了录制,指明录制路径/文件;可选>",
"display":"<用户名称;可选>",
}
5.退出房间流程
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论