多人实时应用层组播

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

•尽量减少服务器的资源(中心转发式的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要注意的事项



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

你可能感兴趣的:(多人实时应用层组播)