WebRTC是一个在WEB浏览器端广泛应用的流媒体引擎,通过点对点的方式实现音视频数据的传输,以完成视频会议等功能。但是考虑到WebRTC主要是为有限人数情况下的点对点视频会议服务,在做其他直播应用的时候,或者接入现有流媒体网络的情况下,并不太适合,可以考虑将浏览器端的WebRTC流,转换为RTMP/GB28181等其他流媒体协议。经过一段时间的研究,已经成功实现了这一功能,这里我介绍一下转换原理。
WebRTC 协议主要由三部分组成:
在建立音视频通信之前,浏览器之间需要通过信令服务器进行一系列交互,以协商会话参数和通信方式。下面是 WebRTC 的信令交互过程:
当信令交互完成后,WebRTC双方建立起数据通道,就开始传输数据,WebRTC支持多种数据传输方式,包括实时传输协议(Real-time Transport Protocol,RTP)、用户数据报协议(User Datagram Protocol,UDP)、传输控制协议(Transmission Control Protocol,TCP)和数据通道协议 (Data Channel Protocol)等。
其中,RTP 是WebRTC 最常用的音视频传输协议,用于实时传输音视频数据。它基于 UDP 协议,并且提供了一些额外的功能,比如丢包恢复、流量控制和时钟同步等。WebRTC 还可以使用 RTCP 协议来进行质量控制和反馈,包括网络延迟、抖动和丢包等指标。
UDP 协议适合传输实时音视频数据,因为它具有低延迟和高吞吐量的特点。但是 UDP 协议也存在一些问题,比如丢包和乱序等,需要通过额外的机制来解决。WebRTC 使用了一些优化技术,比如前向纠错、重传和重构等,来提高音视频传输的质量和稳定性。
除了传输音视频数据,WebRTC 还支持数据通道协议,用于在浏览器之间传输任意数据。数据通道协议基于 SCTP 协议,并且支持可靠传输和流控制等功能。它可以用于传输文件、消息和游戏数据等,提供了一种全新的浏览器间通信方式。
WebRTC的优点虽然很多,但是对直播等领域并不具有特别明显的优点,不过有一个最大的好处是可以在浏览器上进行摄像头采集、编码和推送。所以可以利用这一点,通过网页端获取到编码后的摄像头数据,再进一步接入到现有的其他直播协议或者工作流程中。
当了解清楚WebRTC的整个工作流程后,就可以设定协议转换方案:
以下是FIR(Full Intra Request)关键帧重传报文的格式。
合作请加WX:hbstream或叩叩:229375788。(转载请注明作者和出处)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。