美文网首页
多人实时应用层组播

多人实时应用层组播

作者: shuinan | 来源:发表于2020-01-07 10:25 被阅读0次

    目标: 多人实时互动(多达数十到数百人)

    •尽量减少服务器的资源(中心转发式的10%以下)

    •音视频延迟控制在1s以内

    •纯web、浏览器就可以聚会了

    技术: 应用层组播

    –利用webrtc的p2p data channel分发数据

    (使用 simple-peer库)

    –模糊分层、性能激励的p2p组网分发

    –通过超级节点(服务器)提供传输保证

    –通过socket.io和服务器传输控制信息

    –利用webrtc的p2p data channel传递节点间的控制信息

    开发中主要是视频的显示问题:

    一开始使用了MediaStreamRecorder这个库来录制,但是播放就不太好控制,另外,这个库如果设置间隔小于1000ms,就出问题。  所以后来参考 webrtc samples中的MediaRecorder来录制,使用MediaSource Extension来播放。  播放中总是报告有问题,MediaSource播放第一段后就ended了,排除了数据、传输等问题,最后觉得是关键帧的问题。 

    参考如下,两个链接:

    https://blog.csdn.net/camike/article/details/82797768

    MediaSource对象上有三个主要事件, sourceopen、sourceended、sourceclose。其中,sourceopen事件是在给video.src赋值之后触发;sourceended事件是在用户主动调用终止或者视频数据解析、播放错误时被触发;sourceclose事件是在SourceBuffer和MediaElement中无可用数据(一般是播放到视频末尾)时被触发。我们一般需要在给video.src赋值之后,监听sourceopen事件,以确保MediaSource和HTMLMediaElement已经完成绑定,并在此之后才开始进入数据处理流程。

    下面这个说的更清楚:

    https://blog.csdn.net/Vikanill/article/details/99213067  讲解了使用mse要注意的事项

    最后总算是做出来了,不过离实用还有很多事情要做。

    相关文章

      网友评论

          本文标题:多人实时应用层组播

          本文链接:https://www.haomeiwen.com/subject/rlhractx.html