最近flv.js的事好像有点火,又重新把mse这个东西提上来了。
MSE(media source extensions)是html5的新功能,大致的作用就是可以实现流媒体功能。
如果MSE配合webRTC再加上js的二进制处理,那么可以实现服务器发送视频给其中一个浏览器用户,这个浏览器用户再将视频流传输给其他用户的功能。算是web端在p2p功能上的一种探索吧
思路
server发送视频流的二进制数据给web,web通过webRTC的dataChannel
发送给其他web用户。再通过MSE将二进制数据转换成视频流播出。
MSE相关API解析
- MediaSource.addSourceBuffer()
- 添加数据到buff
- MediaSource.removeSourceBuffer()
- 移除数据
- MediaSource.endOfStream()
- 流结束
- MediaSource.addEventListener()
- 添加事件响应函数
example
完整的代码见https://github.com/yuyugenius/js_video_p2p_demo
web端使用nodejs,启动方式为node index.js
由于本人并不是写前端和js的,只是在这方面做了点尝试,所以代码丑陋bug频出请见谅。
由于代码是好几个月前写的,描述不清请见谅
部分webRTC代码来自google
web端获取码流数据
web端获取码流数据可以通过很多方法,我这里是ajax.
/**
* FILE LOADING
* method:XMLHttpRequest
*/
function get(filename, callback) {
var request = new XMLHttpRequest();
request.responseType = 'arraybuffer';