我正在构建一个与此示例类似的项目jsartoolkit5
,并且我希望能够选择我设备的后置摄像头,而不是默认选择前置Chrome
摄像头。Android
根据本演示中的示例,如果设备有后置摄像头,我添加了以下代码以自动切换摄像头。
var videoElement = document.querySelector('canvas');
function successCallback(stream) {
window.stream = stream; // make stream available to console
videoElement.src = window.URL.createObjectURL(stream);
videoElement.play();
}
function errorCallback(error) {
console.log('navigator.getUserMedia error: ', error);
}
navigator.mediaDevices.enumerateDevices().then(
function(devices) {
for (var i = 0; i < devices.length; i++) {
if (devices[i].kind == 'videoinput' && devices[i].label.indexOf('back') !== -1) {
if (window.stream) {
videoElement.src = null;
window.stream.stop();
}
var constraints = {
video: {
optional: [{
sourceId: devices[i].deviceId
}]
}
};
navigator.getUserMedia(constraints, successCallback, errorCallback);
}
}
}
);
问题是它完美地适用于<video>
标签,但不幸地jsartoolkit
将内容呈现在 a 中canvas
并因此引发错误。我也尝试按照 Github 存储库中此已关闭问题中的说明进行操作,但这次我收到以下错误:DOMException: play() can only be initiated by a user gesture
.
您知道或对如何解决此问题有任何建议吗?
提前感谢您的回复!