【发布时间】:2017-06-03 03:13:07
【问题描述】:
我正在构建一个类似于this example 和jsartoolkit5 的项目,我希望能够选择我设备的后置摄像头,而不是让Android 上的Chrome 默认选择前置摄像头。
根据demo 中的示例,如果设备有后置摄像头,我添加了以下代码以自动切换摄像头。
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 将内容呈现在canvas 中,因此会引发错误。
我也尝试按照 Github 存储库中 this 已关闭问题中的说明进行操作,但这次我收到以下错误:DOMException: play() can only be initiated by a user gesture。
您知道或对如何解决此问题有任何建议吗?
提前感谢您的回复!
【问题讨论】:
标签: javascript android html canvas jsartoolkit