目标: 多人实时互动(多达数十到数百人)
•尽量减少服务器的资源(中心转发式的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要注意的事项
最后总算是做出来了,不过离实用还有很多事情要做。
网友评论