这是我的问题。
我正在制作一个小应用程序,它使用 JS-OCR 来拍照并检测单词。它运行良好,但我只能使用前置摄像头。我的想法是仅使用后置摄像头,不需要切换摄像头的选项。
我正在阅读有关该getUserMedia()功能的信息,但无法解决问题。这是涉及的代码段(函数searchForRearCamera()):
function searchForRearCamera() {
var deferred = new $.Deferred();
// Check that the browser supports getUserMedia.
// If it doesn't show an alert, otherwise continue.
if (navigator.getUserMedia) {
// Request the camera.
navigator.getUserMedia(
// Constraints
{
video: true
},
// Success Callback
function (localMediaStream) {
},
// Error Callback
function (err) {
// Log the error to the console.
console.log('The following error occurred when trying to use getUserMedia: ' + err);
}
);
} else {
alert('Sorry, your browser does not support getUserMedia');
}
//MediaStreamTrack.getSources seams to be supported only by Chrome
if (MediaStreamTrack && MediaStreamTrack.getSources) {
MediaStreamTrack.getSources(function (sources) {
var rearCameraIds = sources.filter(function (source) {
return (source.kind === 'video' && source.facing === 'environment');
}).map(function (source) {
return source.id;
});
if (rearCameraIds.length) {
deferred.resolve(rearCameraIds[0]);
} else {
deferred.resolve(null);
}
});
} else {
deferred.resolve(null);
}
return deferred.promise();
}
Run Code Online (Sandbox Code Playgroud)
这是演示版
Kai*_*ido 29
navigator.getUserMedia已被长期弃用。立即使用navigator.mediaDevices.getUserMedia。
要获取后置摄像头,您可以使用MediaConstraint:video:faceingMode属性。可用值为'user'(前置摄像头)和'environment'(后置摄像头)。
navigator.mediaDevices.getUserMedia({
audio: false,
video: {
facingMode: 'environment'
}
})
.then(stream => vid.srcObject = stream)
.catch(console.error);Run Code Online (Sandbox Code Playgroud)
<video muted autoplay id="vid"></video>Run Code Online (Sandbox Code Playgroud)
或者作为小提琴,因为 null origin StackSnippet 的 iframe 可能会阻止对 gUM 的请求。
| 归档时间: |
|
| 查看次数: |
18243 次 |
| 最近记录: |