Получите поток камеры во встроенной системе - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть встроенная система с камерой и gstreamer, и я пытаюсь получить поток своей камеры.У меня есть веб-приложение, созданное с помощью aurelia и электронов.Я пытался с mediaDevices.getUserMedia, но я получаю NotFoundError, но, используя enumerateDevices, я получаю нужные мне устройства.

Может ли быть проблема, что getUserMedia не работает должным образом с Gstreamer?Если я запускаю тот же проект на моем компьютере, он отлично работает.

Вот мой 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);
      });
  }) 
  }

IЯ видел в Интернете некоторые пакеты, такие как 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__: Array (0) undefined

...