我正在尝试在旧手机(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等))?
您需要更改面向模式
{ audio: true, video: { facingMode: "user" } }
或
{ audio: true, video: { facingMode: { exact: "environment" } } }
首先,我强烈建议使用通过所有不同浏览器实现的所有差异的adapterjs(tsahi的良好博客)。
其次,您正在使用不建议的口香糖,我不建议这样做。我在一个GitHub项目上找到了一个问题,这正是您的问题,也许这将对您有所帮助。
在问题中说明:
navigator.getUserMedia
功能已弃用,您应该使用更新的MediaDevices.getUserMedia
功能。文档的链接。
因此,如果您应用了这些更改,口香糖应接受
{ audio: true, video: { facingMode: { exact: "environment" } } }
约束(第一个答案正确说明),这应该为您提供手机背面摄像机的视频流。
您可能想从旧版本中的apapter.js shims facingmode中汲取灵感:https://github.com/webrtchacks/adapter/blob/master/src/src/js/chrome/getusermedia.js
基本上,它尝试使用navigator.mediadevices.enumeratedEvices(您可能必须求助于较早的MediaStreamTrack.getSources()函数)来枚举设备,然后尝试猜测哪个是后置摄像头,将设备传递给GetuserMedia。请谨慎使用,因为您的旧版本可能具有不同的约束名称(请参阅DeviceID的ConstraintStochrome_函数),并且文档非常稀疏。