[英]WebRTC switch back to front camera with gUM not streaming on Android/Chrome
在三星Galaxy S2的Android 6.0.1 + 镀铬V55,当我getUserMedia
在页面加载时,所获得的视频轨道会出现live
。
当我从我的相机中选择后置摄像头时,我再次触发我的gUM
有限制使用那个精确面向后面的cameraId
,视频轨道ended
,我有一个黑色矩形而不是一个流。
var constraints = {
video: {
deviceId: {
exact: defaultVideoDeviceId
}
},
audio: true
};
function gUM(constraints, callback) {
console.debug("WebRTC constraints", constraints);
// Stopping streaming before starting the new one
if (window.streams.local) {
window.streams.local.getTracks().forEach(function(track) {
track.stop();
});
}
navigator.mediaDevices.getUserMedia(constraints)
.then(stream => {
console.debug("New MediaStream > Tracks", stream.getTracks());
window.streams.local = stream;
callback && callback(stream);
})
.catch(err => {
console.log("Raised error when capturing:", err);
});
}
如果我切换回前面,它会获取一个新的MediaStream并播放视频。
我也面临着类似的问题。
我的测试有点不同,因为我正在尝试制作后置摄像头的GUM,而我有一个GUM媒体流活动,正在使用前置摄像头。
我测试了几个Android设备,只有小米MI Mix 2与MIUI beta 875与Android 8.1的作品。 这可能是因为rom使用新的camera2 android api,或者因为Mi Mix 2相机硬件允许同时使用后置摄像头和前置摄像头。
令人讨厌的是,有时候,在某些设备上,GUM不会失败,但会无限期地挂起。
也许在track.stop()
方法调用之后监听MediaStreamTrack.onended
事件,可以帮助理解资源何时完全空闲,以便您可以尝试使用不同约束的新GUM。
如果你发现了什么,请告诉我。
西蒙娜
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.