Почему разрешение getUserMedia в Firefox занимает слишком много времени, даже после остановки всего MediaStreamTrack? - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть раскрывающийся список для выбора различных мультимедийных устройств для записи аудио и видео.

При смене устройства в Firefox я останавливаю все активные mediaStreamTrack, а затем снова ловлю поток с выбранного устройства. Но это занимает слишком много времени, чтобы решить. Работает нормально в Google Chrome.

_clearStream() {
    if(this.get('mediaStream')) {
      this.get('mediaStream').getAudioTracks().forEach(track => track.stop())
      this.get('mediaStream').getVideoTracks().forEach(track => track.stop())
    }
    if(this.get('audio.mediaStream')) {
      this.get('audio.mediaStream').getAudioTracks().forEach(track => track.stop())
      this.get('audio.mediaStream').getVideoTracks().forEach(track => track.stop())
    }
    this._getStream()
  },

  _getStream() {
    const constraints = {
      audio: { deviceId: this.get('audioSourceDevice') ? { exact: this.get('audioSourceDevice.deviceId')} : undefined },
      video: { width: 320, height: 240, deviceId: this.get('videoSourceDevice') ? { exact: this.get('videoSourceDevice.deviceId')} : undefined }
    }
    return navigator.mediaDevices.getUserMedia(constraints).then((stream) => {
      this.set('mediaStream', stream)
      this.set('audio.mediaStream', stream)
      return stream
    })
  }
...