javascript - 是否可以使用媒体源扩展显示来自网络摄像头的视频块?
问题描述
我正在寻找一种从网络摄像头流中创建视频块并将它们馈送到媒体源扩展中的方法。
我曾尝试使用此代码,但它不起作用:
var mediaConstraints = {
audio: true,
video: true
};
navigator.getUserMedia(mediaConstraints, onMediaSuccess, onMediaError);
function onMediaSuccess(stream) {
var multiStreamRecorder = new MultiStreamRecorder(stream);
multiStreamRecorder.mimeType = 'video/webm; codecs="opus, vp09.00.10.08"';
multiStreamRecorder.ondataavailable = function (blob) {
// blobs.audio
// blobs.video
console.log('data available');
var fileReader = new FileReader();
fileReader.onload = function(event) {
var arrayBuffer = event.target.result;
console.log(arrayBuffer);
console.log('appending buffer');
sourceBuffer2.appendBuffer(arrayBuffer);
//sourceBuffer2.appendBuffer(blob);
if (!playing)
{
playing = true;
video2.play();
}
};
fileReader.readAsArrayBuffer(blob);
};
multiStreamRecorder.start(3000);
}
function onMediaError(e) {
console.error('media error', e);
}
var ms2 = new MediaSource();
var video2 = document.getElementById('video2');
video2.src = window.URL.createObjectURL(ms2);
//video2.crossOrigin = 'anonymous';
var sourceBuffer2;
ms2.addEventListener('sourceopen', function(e) {
sourceBuffer2 = ms2.addSourceBuffer('video/webm; codecs="opus, vp09.00.10.08"');
//sourceBuffer2.appendBuffer(arrayBuffer);
}, false);
ms2.addEventListener('updateend', function(e) {
console.log('update');
sourceBuffer2.appendBuffer(arrayBuffer);
}, false);
发生的情况是生成了一些带有视频内容的 ArrayBuffer,但它们没有显示出来。控制台显示错误Uncaught (in promise) DOMException: Failed to load because no supported source was found.
,然后Uncaught DOMException: Failed to execute 'appendBuffer' on 'SourceBuffer': This SourceBuffer has been removed from the parent media source. at FileReader.fileReader.onload
我究竟做错了什么?
解决方案
@Kaiido 评论是正确的
是的,您可以,您的问题可能是您使用的编解码器不受支持:jsfiddle.net/dcowst62 投票以拼写错误关闭。
利用:
addSourceBuffer('video/webm; codecs="vp8"');
反而
addSourceBuffer('video/webm; codecs="opus, vp09.00.10.08"');
推荐阅读
- amazon-web-services - 这将允许 EC2 实例在没有凭据的情况下访问另一个 EC2 实例吗?
- python - Beautifulsoup4 在抓取 HTML 等项目方面的弱点是什么?
- linux - 如何使用特殊字符(如 && 和 '/')执行 SED 命令以进行搜索和替换?
- vue.js - 如何显示和隐藏在 vue js 中动态创建的 div(多格式选项卡结构)
- jsp - 如何在 servlet 中一次读取 Excel 文件?
- r - 在R中将行拆分为列
- python - 获取某行的平均值
- android - 无法在 OkHttp3 中设置级别:级别具有私有访问权限,并且不推荐使用 SetLevel
- python - 无法从文本文件中读取文件名字符串
- python - 随着类别的增加,如何在 LSTM 中调整超参数