管理进化

如何做基于WebRTC的应用开发


本文将从三部分向大家介绍如何做基于WebRTC的应用开发。

首先要让终端具备WebRTC能力。如果终端运行环境是浏览器,目前绝大部分浏览器都已经实现了对WebRTC的支持(其中Safari和Edge的支持还在持续完善中),虽然彼此有一些差异,但是可以借助adapter.js等适配层屏蔽掉这些差异。如果终端运行环境不是浏览器,则可以采用其他的开源SDK或商业SDK,将其集成在终端应用程序中。当然也可以基于Google的开源WebRTC实现的Native代码进行裁剪或移植。值得一提的是Google的开源WebRTC代码库中有大量的终端多媒体问题和传输问题的应对方案的实现,包括音视频的编解码、同步、带宽预测、QoS,AEC等,都是做终端(特别是IoT设备或桌面环境应用)开发时很好的参考。


终端实现了WebRTC只是表示它具备了实时通信的能力,但各个终端任然是孤立的,需要将各个终端的SDP进行交换才能让它们完成媒体和传输的协商才能让各个终端之间真正通起来。WebRTC并未就各个实现之间交换SDP的传输方式以及终端的“寻址”方式做出规定,这跟具体应用场景和其实现方式高度相关。因此要实现基于WebRTC的应用还需要一些“额外”的工作,通过一个各个终端都“认识”并能“找到”的“中间人”来进行SDP交换。譬如最简单的“1对1”呼叫的场景,这个“中间人”就是信令服务器,这种WebRTC的信令服务器可以基于任何消息系统构建,有很多开源实现可以利用或参考,自研开发也并不复杂。

如果要基于WebRTC做“1对多”或者“多对多”的实时通信应用,则情况要复杂一些,具体的做法也会因实际应用场景而不同,根据通信终端之间的媒体流拓扑结构,大体上可以分为Peer2Peer(终端点对点连接)模式、SFU(Selective Forwarding Unit,服务器选择性转发)模式和MCU(MultipointControl Unit,服务器混音混流)模式。其中Peer2Peer模式(所有参与方均需与其他所有参与方通信的情景又叫Mesh模式)的特征是呼叫中每两个需要进行通信的参与者之间都建立起点对点的媒体连接(PeerConnection),所有的媒体连接都是终端之间的(有可能通过TURN服务器进行NAT穿越,但不影响本质流拓扑),服务器侧不参与。Peer2Peer模式的优点是媒体拓扑去中心化,服务器侧实现简单,只需要将各个终端之间的信令交换送达即可;缺点是终端需要受理多路媒体流的收发,随着呼叫中参与方数的增加,媒体连接数会阶乘函数式增长,无论对终端的编解码计算力还是带宽资源都会带来巨大的压力。如果一个呼叫中参数方数很少(譬如大多数时间2方偶尔3方),则可以考虑选用Peer2Peer模式的服务器侧实现方案。

以上就是做基于WebRTC的应用开发相关步骤。

|相关阅读

1、WebRTC是什么

WebRTC是终端的音视频媒体访问(输入输出)接口在类似web环境下的标准化抽象,以及用于实时通信的会话的建立过程、终端音视频媒体(或其他数据)编码格式、传输方式和参数的描述和协商规范。

2、网易云信:解除WebRTC本地化的不适应症

针对WebRTC在实际应用中的技术难点,网易云信通过自研全功能工业级音视频框架NRTC(Netease Real-Time Communication)为 Web端和移动端的开发提供了完整的音视频技术解决方案。在技术端,NRTC实现了Web端和其它移动端、PC端的互通,改善了WebRTC只针对Web端的局限性。NRTC Sever端的QoS优化,则保证了国内弱网环境下的音视频清晰度和流畅度,为用户带来了高质量的使用体验。同时,网易云信做了大量的调优工作,让火狐,Chrome,Safari,Edge等主流浏览器能够轻松适配。优化后的WebRTC也满足了双人点对点和多人会议的使用需求。用户只要接入实时音视频的SDK就可以实现在线教育、在线医疗、游戏直播等多元化的场景功能。

智齿客服