【发布时间】:2014-10-07 19:52:15
【问题描述】:
在我的 nexus4 (Android 4.4.4) 上,我正在尝试在面向“用户”的摄像头和面向“环境”的摄像头之间切换。
直接访问任何一个都可以。
在它们之间切换 bij 再次调用 navigator.getUserMedia() 设置新约束失败。失败导致黑屏视频 & MediaStream.ended=true。
为什么在我第二次调用 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) {
...
}
);
};
【问题讨论】:
-
我假设是因为您一次只能拥有一台摄像机,而杀死另一台摄像机会杀死原始流...一旦添加了创建的新流,您将需要重新协商整个对等连接用另一台相机。
-
@BenjaminTrent 您在谈论“重新协商对等连接”。我确实再次调用了“navigator.getUserMedia()”(重新协商?),并带有包含另一个相机 ID 的新约束。这不就是“重新协商对等连接”的意思吗?
-
忽略我之前的评论...我完全错了:)。这两个调用的源 ID 是什么?
标签: javascript android video webrtc getusermedia