当前位置:  开发笔记 > 编程语言 > 正文

将getUserMedia流式传输到服务器

如何解决《将getUserMedia流式传输到服务器》经验,为你挑选了1个好方法。

我是二进制数据和getUserMedia的新手,将getUserMedia(视频/音频)流式传输到服务器,然后为其他连接准备流(视频/音频)的推荐方法是什么?

我最初的想法是通过websockets发送数据,然后将数据写入文件(mp4),如下所示:

getUserMedia -->(websockets)--> server -->(file.mp4)--> video.src.

我一直在看MediaStreamRecorder,我可以像这样发送一个缓冲区:

multiStreamRecorder.ondataavailable = function (blobs) {
    socket.emit('blobs', blobs)
};

在我得到的服务器上

{ audio: ,
  video: ,
  onDataAvailableEventFired: true }

现在我想我应该将它写入一个文件,提供该文件,然后从video元素的源中请求该文件.如果这一切都正确我将如何将文件写入文件系统?或者我做错了什么?

我了解WebRTC具有p2p功能,我将为~50或更多客户端提供视频流服务,因此它不是一个选项.

使用websocket解决方案更新:

我现在通过websockets发回数据,如下所示:

socket.on('blobs', function(data){
    socket.emit('blobs', data)
})

并在客户端将其推入a mediaSource和a video元素,timestampOffset以保持它平滑.

var mediaSource = new MediaSource(),
    mediaBuffer,
    // init duration of 0 seems fine
    duration = 0;

var video = $('video').get(0);
video.src = window.URL.createObjectURL(mediaSource);

mediaSource.addEventListener('sourceopen', function(e) {
    mediaBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vp8"')
    mediaBuffer.addEventListener('update', function() {
        // wait for mediaBuffer update to fire before setting the new duration
        duration = video.duration
    });
}, false);

socket.on('blobs', function (data) {
    mediaBuffer.timestampOffset = duration;
    mediaBuffer.appendBuffer(new Uint8Array(data.video));
});

Tsahi Levent.. 7

为了使其正常工作,您还需要服务器"说"WebRTC.使用websockets不会给你想要的结果,也不会像WebRTC那样响应 - 它不是实时的.

要使WebRTC在服务器上运行,您可以使用webrtc.org或OpenWebRTC上的WebRTC堆栈作为起点,使用GStreamer或者更完整的东西.WebRTC的媒体服务器框架的优秀项目是Kurento,Jitsi和Janus.

由于您的问题的性质,我的建议是从上面提到的一个更完整的媒体服务器框架开始.



1> Tsahi Levent..:

为了使其正常工作,您还需要服务器"说"WebRTC.使用websockets不会给你想要的结果,也不会像WebRTC那样响应 - 它不是实时的.

要使WebRTC在服务器上运行,您可以使用webrtc.org或OpenWebRTC上的WebRTC堆栈作为起点,使用GStreamer或者更完整的东西.WebRTC的媒体服务器框架的优秀项目是Kurento,Jitsi和Janus.

由于您的问题的性质,我的建议是从上面提到的一个更完整的媒体服务器框架开始.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有