Android 如何使用webkitGetUserMedia启动后置摄像头

Android 如何使用webkitGetUserMedia启动后置摄像头,android,cordova,webkit,webrtc,mobile-webkit,Android,Cordova,Webkit,Webrtc,Mobile Webkit,我正在尝试打开旧phoneandroid版本5.0中的后摄像头。由于这些旧设备不支持navigator.mediaDevices&&navigator.mediaDevices.getUserMedia,因此我仅依赖webkitGetUserMedia。我成功地打开了一个摄像头并播放了视频,但它只使用前摄像头,我需要一个后摄像头视频。这是我的密码 if(navigator.webkitGetUserMedia) { // WebKit-prefixed navigator.web

我正在尝试打开旧phoneandroid版本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等功能?

您需要更改面对模式

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


首先,我强烈建议使用,它通过Tsahi提供的所有不同浏览器实现来填补所有差异

其次,您使用的是不推荐使用的GUM-API,我不推荐使用。我在一个GitHub项目上发现了一个问题,这正是你的问题,也许这会对你有所帮助

在问题中指出:

不推荐使用navigator.getUserMedia函数,而应使用较新的MediaDevices.getUserMedia函数。这是为文档准备的

因此,如果你应用这些变化,牙龈应该接受

{音频:真,视频:{facingMode:{exact:environment}}


第一个答案正确说明了哪些限制,哪些限制应该为您提供手机后置摄像头的视频流

您可能想从adapter.js如何在旧版本中使用facingMode中汲取灵感:


基本上,它尝试使用navigator.mediaDevices.enumerateDevices您可能必须求助于早期的MediaStreamTrack.getSources函数来枚举设备,然后尝试猜测哪一个是后摄像头,并将设备ID传递给getUserMedia。注意这一点,因为您的旧版本可能有不同的约束名称。请参阅设备ID的constraintsToChrome_uu函数,相关文档非常稀少。

我已经尝试过这些,对于webkitGetUserMedia视频来说,这是无效的选项。通过在canvasThanks上添加这些视频停止显示以获得您的详细回复,让我解释一下,正如我在帖子中提到的,我想访问android设备中的摄像头,因为客户正在使用这些设备,所以这些设备非常旧,也需要支持这些设备的功能。所以这些手机都有旧的webview,我坚持使用webkitGetUserMedia,因为webview对getUserMedia一无所知。由于使用getUserMedia选择摄像头现在非常容易,但使用webkitGetUserMedia,它只允许使用前置摄像头,不知道如何更改设置以选择后置摄像头。这个旧手机webview甚至不支持navigator.mediaDevices。如前所述,只有navigator.webkitGetUserMedia可用。你知道我在哪里可以找到webkitGetUserMedia的文档吗?我已经在谷歌上搜索过了,但没有找到。请尝试MediaStreamTrack.getSources,而不是enumerateDevices。这也不可用。。。。感谢大家,我通过cordova插件找到了另一个解决方案,该插件将摄像头流式传输到javascript,并能够更改摄像头的前/后。。
{ audio: true, video: { facingMode: { exact: "environment" } } }