相关疑难解决方法(0)

使用媒体流扩展(MSE)显示getUserMediaStream实时视频

我正在尝试使用getUserMedia显示从网络摄像头拍摄的MediaStream,并使用可能的任何机制(作为实验)将其中继到远程对等体.我没有直接使用webRTC,因为我想控制原始数据.

我遇到的问题是我的视频元素没有显示任何内容,我也没有收到任何错误.我在Elementary OS(基于Ubuntu 14.04的linux OS)上使用Chrome版本51.0.2704.103(64位).

作为旁注,如果我将所有blob记录到一个数组中然后创建一个新的blob并将视频的src元素设置为URL.createObjectUrl(blob),它会正确显示视频.

这是我试图完成的代码(减去中继,我只是尝试在本地播放):

var ms = new MediaSource();
var video = document.querySelector("video"); 
video.src = window.URL.createObjectURL(ms);

ms.addEventListener("sourceopen", function() {
    var sourceBuffer = ms.addSourceBuffer('video/webm; codecs="vorbis,vp8"');

    navigator.getUserMedia({video: {width: 320, height: 240, framerate: 30}, audio: true}, function(stream) {
        var recorder = new MediaRecorder(stream);

        recorder.ondataavailable = function(event) {
            var reader = new FileReader();
            reader.addEventListener("loadend", function () {
                var uint8Chunk = new Uint8Array(reader.result);
                if (!sourceBuffer.updating) {
                    sourceBuffer.appendBuffer(uint8Chunk);
                }
                if (video.paused) video.play();
            });
            reader.readAsArrayBuffer(event.data);
        };

        recorder.start(10);
    }, function(error) {
        console.error(error);
    });
}, false); …
Run Code Online (Sandbox Code Playgroud)

live-streaming webrtc getusermedia media-source

7
推荐指数
1
解决办法
576
查看次数

MediaSource随机停止视频

我正在做一个我想要的项目

getUserMedia -> MediaRecorder -> socketIO -> MediaSource appendbuffer
Run Code Online (Sandbox Code Playgroud)

我让它工作,但几秒后它随机停止.

我知道WebRTC,但在我正在开发的项目中,它基于一个不支持WebRTC的Chrome嵌入版本的环境.

服务器:

'use strict';

const io = require('socket.io')();

io.on('connection', (socket) => {
  console.log('connection');

  socket.on('stream', (data) => {
    socket.emit('stream', data);
  });
});

io.listen(3001);
Run Code Online (Sandbox Code Playgroud)

客户:

//Codecs
var SOURCE_BUFFER_MIME = 'video/webm; codecs="vp8, vorbis"';
var RECORDER_MIME      = 'video/webm; codecs="vp8"';

//Here buffers are stored when sourcebuffer is still 'updating'
var buffers            = [];

//Video1: Directly from get user media
var $video1      = document.getElementById('video1');

//Video2: Using mediasource
var $video2      = document.getElementById('video2');
var mediaSource  = new MediaSource(); …
Run Code Online (Sandbox Code Playgroud)

javascript getusermedia media-source web-mediarecorder

5
推荐指数
0
解决办法
487
查看次数