如何使用webkitGetUserMedia启动相机

问题描述 投票:0回答:3

我想在旧手机(Android版5.0)中打开后视摄像头。由于这些旧设备不支持navigator.mediaDevices && navigator.mediaDevices.getUserMedia所以我只依赖webkitGetUserMedia。我成功打开相机并显示视频,但它只使用前置摄像头,我需要一个后置摄像头视频。这是我的代码

if(navigator.webkitGetUserMedia) { // WebKit-prefixed
        navigator.webkitGetUserMedia({video: true}, function(stream){
            video.src = window.webkitURL.createObjectURL(stream);
            video.play();
        }, errBack);

我没有找到任何与此相关的文档。有没有办法用webkitGetUserMedia打开后置摄像头?其次,因为我在基于cordova的应用程序中使用,并且默认情况下Cordova使用默认系统webview(有选项使用人行横道但不想将其与基于cordova的应用程序混淆)是否有可能集成任何其他webview来实现此目的(getUserMedia等)?

android cordova webkit webrtc mobile-webkit
3个回答
1
投票

您需要更改面对模式

{ audio: true, video: { facingMode: "user" } }

要么

{ audio: true, video: { facingMode: { exact: "environment" } } }

0
投票

首先,我强烈建议使用AdapterJS,它通过所有不同的浏览器实现来弥补所有差异(来自Tsahi的关于此主题的优秀blog)。

其次,您使用的是已弃用的GUM-API,我不建议这样做。我在GitHub项目上找到了一个issue,这正是你的问题,也许这对你有帮助。

在问题中陈述:

不推荐使用navigator.getUserMedia函数,您应该使用较新的MediaDevices.getUserMedia函数。文件的link

因此,如果您应用这些更改,GUM应该接受

{ audio: true, video: { facingMode: { exact: "environment" } } }

约束(第一个答案正确说明),它应该为您提供手机后置摄像头的视频流。


0
投票

您可能希望从旧版本中的adapter.js如何使用facesMode中获取灵感:https://github.com/webrtcHacks/adapter/blob/master/src/js/chrome/getusermedia.js

基本上它尝试使用navigator.mediaDevices.enumerateDevices(你可能不得不求助于早期的MediaStreamTrack.getSources()函数)来枚举设备,然后尝试猜测哪一个是后置​​摄像头,将deviceId传递给getUserMedia。请注意这一点,因为旧版本可能具有不同的约束名称(请参阅constraintsToChrome_函数),因为deviceId的文档非常稀疏。

© www.soinside.com 2019 - 2024. All rights reserved.