我们都知道,WebRTC是面向互联网的一种即时通讯尺度,由于被Chrome、火狐、Safari等主流浏览器支持,并提供了一致和简练的API,使得开发WebRTC的视频通讯应用异常简朴和盛行。

在大多数情况下,我们以为双向视频通讯手艺和视频直播手艺是两种差别的手艺,一个做视频通话,一个做单向直播(在以往的直播方案中,绝大部分是接纳rtmp协议做直播上行的)。有没有可能使用WebRTC举行视频直播呢?这样既可以行使WebRTC的低延迟和优越的网络适应性,又可以充分行使WebRTC API的简练性获得更高的开发效率和天真性。更要害的一点是,使用WebRTC手艺做直播,我们可以直接行使Chrome等浏览器的壮大能力和跨平台特征,衍生出更天真和简朴的视频直播生态。

谜底是一定的,WebRTP做直播的方案完全可行: 使用WebRTC终端(浏览器或APP)作为视频采集端,将视频通过RTP协议上行传输到流媒体服务器,再由服务器举行视频协议的转换和播出。

直播流程中介入的节点主要有三个: 直播发起端、流媒体服务器和播放终端。

直播发起端的实现相对简朴,可以使用js剧本,行使浏览器的WebRTC API来实现视音频的采集、合成、编码和传输,也可以使用的Android或iOS的WebRTC SDK来实现。有一定js开发能力或app开发能力的程序员可以胜任这部分事情。

流媒体服务器的开发相对是个难点,需要能够处置WebRTC信令、吸收RTP协议并举行协议转换后对外提供大并发的直播输出。若是要想降低开发周期和投入,可以使用现有的成熟产物,例如可以选择海内的流媒体服务器软件NTV Media Server G3,这个系统在协议转换和播出能力上显示都是不错的。

无论接纳哪个产物,服务器上的实现功效应该是一致的,即: WebRTP协议适配、音视频流吸收、协议重新复用、播出。这个历程如下图:

播放终端的事情相对较小,通过流媒体服务器适配后,一样平常终端不需要做任何改善,可以继续使用原有的协媾和方式举行播出,例如http-flv协议或hls协议。固然也可以开发WebRTC的播放终端。

好了,由于时间缘故原由,我们今天暂时探讨到这里,有疑问的同砚可以在知乎和我交流。