在我的nexus4(Android 4.4.4)上,我试图切换用户'面对镜头和环境'面对镜头。
直接访问其中任何一个都有效。
在它们之间切换bij,再次调用navigator.getUserMedia()
设置新约束失败。失败导致黑屏视频& MediaStream.ended =真
为什么我第二次调用getUserMedia时MediaStream.ended = true?
在我看来,我动态创建了多个视频源的按钮。在这种情况下两个。单击按钮将调用camera.getUserMedia()
并传入媒体源:
camera.getUserMedia = function(source){
var constraints = {
video: true,
audio: false
};
if(source){
constraints.video = {optional: [{
sourceId: source.id
}]};
}
navigator.getMedia(
constraints,
function(stream) {
var vendorURL = window.URL || window.webkitURL;
video.src = vendorURL.createObjectURL(stream);
video.play();
streaming = true;
},
function(err) {
...
}
);
};
答案 0 :(得分:0)
我已经通过将流存储在相机对象上解决了这个问题,然后在将流绑定到视频元素之前,我将调用stop on it 。不确定究竟发生了什么(可能有人可以在评论中添加解释)。
camera.getUserMedia = function(source){
if(camera.stream){
camera.stream.stop();
}
...
navigator.getMedia(
constraints,
function(stream) {
camera.stream = stream;
...
},
function(err) {
...
}
);
};