实现WebRTC P2P连接

WebRTC是为了解决实时音视频传输问题,致力于提供免安装、免插件、免专利费,人人可用的高效便捷的实时流媒体传输。

1. 3种实时流媒体实现比较

目前实时流媒体主流有三种实现方式:WebRTC、HLS、RTMP,当你看直播网站的时候会发现很多采用了HLS(HTTP Live Streaming,http直播),它是一种把流媒体拆分成多个独立小文件的技术,按照播放时间请求不同文件,把hls的文件进行解复用之后取出音视频数据然后丢给video去播放(Safari和安卓版的Chrome能直接播放hls)。它的优点是:使用了传统http协议,所以兼容性和稳定都非常好,服务端可以把hls文件上传到cdn,进而能够应对百万级别观众的直播,缺点是延时比较大,通常在10s以上,适合观众和主播没有什么交互的场景。因为一个hls文件时间长度通常在10s以上,再加上生成文件的时间就导致延迟很大。

它是苹果推出的一种标准,而另一种RTMP是Adobe推出的,使用长连接,是一套完整的流媒体传输协议,使用flv视频容器,原生浏览器不支持(flash插件支持),不过可以使用websocket + MSE的方式,相关的类库比较少,在Android/IOS客户端上的直播应该用得比较多一点。相对于HLS请求分片的形式,RTMP由于使用长连接,接收不间断的数据流,它的延迟要比HLS小很多,通常是1~3秒,所以如果观众和主播之间有通话或者视频交互,这种方式的延迟是可以接受的。

第3种WebRTC(Web Real Time Communication)是谷歌在2012年推出的,到现在已经有6年的发展。今年2018年3月份WebRTC 1.0正式定稿,并得到了Safari在内的所有主流浏览器的支持(Edge弄了一个ORTC),WebRTC致力于高效的实时音视频通信,做到比RTMP提供更低的延迟和更小的缓冲率。并且官方还提供了配套的native的Andorid/IOS的库,不过实际的实现可能是套一个webview,由webview启动webrtc,再把数据给native层渲染。

先介绍下WebRTC的组成。

2. WebRTC的组成

WebRTC由三大块组成,如下图所示:

(1)getUserMedia是负责获取用户本地的多媒体数据,如调起摄像头录像等。

(2)RTCPeerConnection是负责建立P2P连接以及传输多媒体数据。

(3)RTCDataChannel是提供的一个信令通道,在游戏里面信令是实现互动的重要元素。

3. getUserMedia

getUserMedia负责获取用户本地的多媒体数据,包括调起麦克风录音、摄像头捕获的视频和屏幕录制这三种,我已经在《

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值