2017-04-20 74 views
0

我想在离子应用程序中获得我的后置摄像头的视频流。 为此,我使用getUserMedia,可以正确使用前置摄像头。GetUserMedia - facingMode尽管adapter.js不被识别

当我改变面向模式为“环境”,我得到这个错误:

Unknown constraint named facingMode rejected ConstraintNotSatisfiedError

在我的应用离子我已经安装了故宫包“的WebRTC适配器”。

这里是我的代码从后置摄像头获取流:

this.constraints = { audio: true, video: {mandatory: { facingMode: 'environment'}}}; 
     cordova.plugins.diagnostic.requestRuntimePermission((status) => { 
      if (cordova.plugins.diagnostic.permissionStatus.GRANTED){ 

       navigator.getUserMedia(this.constraints, (stream) => { 
        let video = <HTMLVideoElement>document.getElementById('localVideo'); 
        video.srcObject = stream; 
       }, function(err){ 
        console.log("Error get stream: ", err.name); 
       }); 
      } 
     }, (error) => { 
      console.error("Error during runtime permission :", error); 
     }, cordova.plugins.diagnostic.permission.CAMERA); 

我认为这是一个兼容性问题。任何人都可以帮助我?

谢谢。

回答

1

您正在使用过时的非标准约束语法。 adapter.js polyfills的规格,所以受益于它,你必须follow the spec。 例如而不是:

{audio: true, video: {mandatory: {facingMode: 'environment'}}}; 

使用

{audio: true, video: {facingMode: {exact: 'environment'}}}; 

我已经有an answer with a working example of this。它应该与Chrome一起工作。不知道这是否会与离子或非离子。让我知道如果它不起作用。

+0

谢谢您的回答,但是当我使用这种语法时,我没有任何错误,但相机仍处于'用户'模式 –

+0

@DamienLD确保您已更新到[最新版本](https:// github .com/webrtc/adapter/pull/495)。此外,这是什么设备,[它有什么相机](http://jsfiddle.net/jib1/tsa6rrt7/)它有吗? – jib

+0

我有最新版本的适配器(3.3.3),我在两个设备上运行代码:Huawei Honor和Huawei P9 lite。 我每个都有两个摄像头,但是'd.label'什么都不返回,是不是一个问题? –