【发布时间】:2023-03-03 18:55:02
【问题描述】:
我有这段代码,它最终将约束传递给 getUserMedia。
function captureUserMedia(callback) {
$('#videoSource').css('display', 'none');
var videoSource = videoSelect.value;
var constraints = null;
constraints = {
video: {
optional: [{
sourceId: videoSource
}]
},
audio: false
}
var htmlElement = document.getElementById('rtcvideo');
htmlElement.setAttribute('autoplay', true);
htmlElement.setAttribute('controls', true);
var mediaConfig = {
video: htmlElement,
onsuccess: function(stream) {
config.attachStream = stream;
callback && callback();
htmlElement.setAttribute('muted', true);
rotateInCircle(htmlElement);
},
onerror: function() {
alert('unable to get access to your webcam');
}
};
if (constraints) mediaConfig.constraints = constraints;
getUserMedia(mediaConfig);
streamAttached = true;
}
我已经尝试了很多方法来让它工作,困难可能在于我发现很难理解的回调。 我怎样才能改变这段代码,让它工作? 我试图在 getUsermedia 之前使用导航器,但它需要 3 个参数,其中两个是成功和错误回调。 我可以在 mediaconfig var 中看到 onerror 和 onsucces 回调。 有人可以看看吗?
更新
我刚刚看到 getUserMedia 是一个在附加的 RTCPeerConnection-v1.5.js 文件中定义的函数:
function getUserMedia(options) {
var n = navigator,
media;
n.getMedia = n.webkitGetUserMedia || n.mozGetUserMedia;
n.getMedia(options.constraints || {
audio: true,
video: video_constraints
}, streaming, options.onerror || function(e) {
console.error(e);
});
function streaming(stream) {
var video = options.video;
if (video) {
video[moz ? 'mozSrcObject' : 'src'] = moz ? stream : window.URL.createObjectURL(stream);
video.play();
}
options.onsuccess && options.onsuccess(stream);
media = stream;
}
return media;
}
【问题讨论】:
标签: javascript webrtc polyfills