@alekssamos
Программист любитель

Получить ID активного устройства?

Есть такой код. На телефоне две камеры и поумолчанию активна передняя. А в select выбрана задняя. И чтобы переключиться, мне нужно выбрать переднюю, хотя она уже активна, а затем опять заднюю.
Как сделать такую проверку типа
if (deviceInfo.deviceId == activeDeviceId)
    option.selected = true;

'use strict';
var videoElement = document.querySelector('video');
var videoSelect = document.querySelector('select#videoSource');
videoSelect.onchange = getStream;

getStream().then(getDevices).then(gotDevices);

function getDevices() {
  // AFAICT in Safari this only gets default devices until gUM is called :/
  return navigator.mediaDevices.enumerateDevices();
}

function gotDevices(deviceInfos) {
  window.deviceInfos = deviceInfos; // make available to console
  console.log('Available input and output devices:', deviceInfos);
  for (const deviceInfo of deviceInfos) {
    const option = document.createElement('option');
    option.value = deviceInfo.deviceId;
    if (deviceInfo.kind === 'audioinput') {
      /* option.text = deviceInfo.label || `Microphone ${audioSelect.length + 1}`; */
      /* audioSelect.appendChild(option); */
    } else if (deviceInfo.kind === 'videoinput') {
      option.text = deviceInfo.label || `Camera ${videoSelect.length + 1}`;
      videoSelect.appendChild(option);
    }
  }
  videoSelect.disabled=videoSelect.length<=1;
}

function getStream() {
  if (window.stream) {
    window.stream.getTracks().forEach(track => {
      track.stop();
    });
  }
  const videoSource = videoSelect.value;
  const constraints = {
    video: {deviceId: videoSource ? {exact: videoSource} : undefined}
  };
  return navigator.mediaDevices.getUserMedia(constraints).
    then(gotStream).catch(handleError);
}

function gotStream(stream) {
  window.stream = stream; // make stream available to console
  videoSelect.selectedIndex = [...videoSelect.options].
    findIndex(option => option.text === stream.getVideoTracks()[0].label);
  if ('srcObject' in videoElement) {
    videoElement.srcObject = stream;
  } else {
    videoElement.src = URL.createObjectURL(stream);
  }
}
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы