从浏览器通过socket.io发送视频/音频

时间:2018-04-17 01:11:49

标签: node.js socket.io getusermedia

我正在尝试发送视频和音频trought socket.io,但我最终我将如何处理它?<​​/ p>

这是我的代码:

服务器,这里我收回缓冲区:

io.on('connection', function (socket) {
    socket.on('radio', function (image) {
        socket.broadcast.emit('radio-reciver', {count: 1, buff: image});
    })
})

http.listen(port, function () {
    console.log('Server started!')
});

客户端:

//发送视频/音频的部分

navigator.getUserMedia({ video: true, audio: true }, loadCam, loadFail)

function loadCam(stream) {
            video.src = window.URL.createObjectURL(stream);

            var media = new MediaRecorder(stream);
            media.ondataavailable = function (e) {
                socket.emit('radio', e.data);
            }


            media.start(1000)
            logger("Cam is ok")
}

//收回的部分,此处我收回缓冲区

socket.on('radio-reciver', function (image) {

            var sourceStream = MediaSourceStream({  // Creates a writable stream
                mimeType: 'video/webm; codecs="opus,vp8"'
            })
            image.pipe(sourceStream)

            var img = document.getElementById('play');
            img.src = window.URL.createObjectURL(sourceStream.mediaSource);
            $('#logger').text(image);
        })

如您所见,我正在使用媒体记录器传输数据但无法正常工作......如何解决此问题?

1 个答案:

答案 0 :(得分:0)

您应该使用:

而不是image.pipe()
sourceStream.write(image);

你将在这里接收块作为Buffer对象。不是一个流。