在嵌入式系统上获取摄像机流

时间:2019-02-07 11:10:22

标签: node.js camera gstreamer embedded-linux webcam

我有一个带有相机和gstreamer的嵌入式系统,我正在尝试获取相机的信息流。我有一个用aurelia和电子构建的Web应用程序。 我尝试使用mediaDevices.getUserMedia,但是遇到NotFoundError,但是使用enumerateDevices可以获得所需的设备。

getUserMedia不能与Gstreamer一起正常工作吗?如果我在PC上运行相同的项目,则效果很好。

这是我的HTML:

    <video ref="videoPlayer" hide.bind="screenSharing" id="videoPlayer" autoplay muted></video>

这是我的js:

let j = 0;
navigator.mediaDevices.enumerateDevices()
  .then((deviceInfos) => {
    for (var i = 0; i !== deviceInfos.length; ++i) {
      console.log(deviceInfos[i]);
      if (deviceInfos[i].kind === 'videoinput') {
        this.deviceInfo[j] = deviceInfos[i];
        j++;
      }
    }
    if (this.deviceInfo.length > 1) {
      console.log(this.deviceInfo.length);
      this.constraints = {
        audio: true,
        video: {
          deviceId: { exact: this.deviceInfo[1].deviceId }
        }
      };
    }
    else {
      console.log("Only one camera");
      this.constraints = {
        video: {
          deviceId: { exact: this.deviceInfo[0].deviceId }
        },
        audio: true
      };
      console.log(this.constraints);
    }

  })
  .then(() => {
    navigator.mediaDevices.getUserMedia(this.constraints)
      .then((stream) => {
        console.log('Got mic+video stream', stream);
        this.localStream = stream;
        this.videoPlayer.srcObject = this.localStream;

      })
      .catch((err) => {
        console.error(err);
      });
  }) 
  }

我在互联网上看到过一些像livecam这样的软件包,但不知道如何使用它。

我附加了mediaDevices.enumerateDevices的输出:

    console.log(navigator.mediaDevices.enumerateDevices())
VM149:1 Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}__proto__: Promise[[PromiseStatus]]: "resolved"[[PromiseValue]]: 
Array(5)0: MediaDeviceInfodeviceId: "default"groupId: "6dbae3b74e14f5e239133b5feea86e5ae7a9741a3e3fd21a86eab9273fe135aa"kind: "audioinput"label: "Default"__proto__: 
MediaDeviceInfo1: MediaDeviceInfodeviceId: "d415346fe3db142f8daa611ad3dedb298b5d94b70f4221c38e7e6582f45c3008"groupId: "8d82cc2495eebb4c40bb77a5e0287d4b365ac1de8205684eae39cb605a703f11"kind: "audioinput"label: "Built-in Audio Stereo"__proto__: 
 MediaDeviceInfo2: MediaDeviceInfodeviceId: "82378e03eff67ac471305e50ac95e629ebf441c1ab1819d6a36aca137e37e89d"groupId: ""kind: "videoinput"label: ""__proto__: MediaDeviceInfodeviceId: (...)groupId: (...)kind: (...)label: (...)toJSON: function toJSON()constructor: function MediaDeviceInfo()Symbol(Symbol.toStringTag): "MediaDeviceInfo"get deviceId: function ()get groupId: function ()get kind: function ()get label: function ()__proto__: 
 Object3: MediaDeviceInfodeviceId: "default"groupId: "default"kind: "audiooutput"label: "Default"__proto__: 
 MediaDeviceInfo4: MediaDeviceInfodeviceId: "31a7efff94b610d3fce02b21a319cc43e2541d56d98b4138b6e3fe854b0df38c"groupId: "391b1de381c11ab437d507abc0543f288dd29d999717dbb0e949c006ef120935"kind: "audiooutput"label: "Built-in Audio Stereo"__proto__: 

MediaDeviceInfolength:5__proto__:数组(0) 未定义

0 个答案:

没有答案