@historydev
Острая аллергия на анимешников

Как создать objectUrl из mediaStream?

Мне нужно создать ссылку на стрим из userMedia, я пробую по примеру с mdn - оригинал:

const mediaStream = await navigator.mediaDevices.getUserMedia({ video: true });
const video = document.createElement("video");
if ("srcObject" in video) {
  video.srcObject = mediaStream;
} else {
  // Avoid using this in new browsers, as it is going away.
  video.src = URL.createObjectURL(mediaStream);
}


Мой код:

var stream
async function turnOnCameraHandler() {
    var mediaStream = await navigator.mediaDevices.getUserMedia({
        video: /*{
            frameRate: { ideal: 60, max: 60 },
            facingMode: {
                exact: 'environment'
            },
        }*/ true,
        audio: false
    });
    
    stream = mediaStream;
    video.srcObject = stream;
    
    console.log(URL.createObjectURL(mediaStream))
}


На выходе получаю ошибку:
Uncaught (in promise) TypeError: Failed to execute 'createObjectURL' on 'URL': Overload resolution failed.
    at turnOnCameraHandler


В гугле много вариаций этой ошибки, но конкретно с моей ситуацией не нашёл пока.

Предупреждение mdn:
Предупреждение: если у вас все еще есть код, который использует createObjectURL()присоединение потоков к элементам мультимедиа, вам необходимо обновить свой код, чтобы установить srcObjectего MediaStreamнапрямую.


Важно:
Основная проблема, почему я пытаюсь это сделать, в том, что на андроиде в webview зависает autoplay видео, если просто указать video.srcObject = stream, я ищу решение, решил попробовать вставить элемент с source и src.
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 1
i229194964
@i229194964
Веб разработчик
var stream;
async function turnOnCameraHandler() {
  var mediaStream = await navigator.mediaDevices.getUserMedia({
    video: true,
    audio: false
  });

  stream = mediaStream;
  video.srcObject = stream;
  video.play(); // Добавляем автоматическое воспроизведение
}

turnOnCameraHandler();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы