Video mediaDevices Назначение большого двоичного объекта «videoRef.srcObject» вместо «src» - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь сделать BLOB-объект источником видеоэлемента.Мой код работает нормально, когда:

videoRef.src = URL.createObjectURL(blob)

, но использование 'src' и 'URL.createObjectURL' не рекомендуется вместо использования 'srcObject' https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL

enter image description here

и https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia

enter image description here

Мой вопрос: как я могу просто добавитьBLOB-файл для srcObject, например, так:

videoRef.srcObject = blob

Когда я пытаюсь выполнить приведенный выше код, я получаю сообщение об ошибке: «TypeError: Не удалось установить свойство« srcObject »для« HTMLMediaElement »: предоставленное значение не соответствуетнаберите 'MediaStream'. "

Как я могу не использовать устаревший videoRef.src и применять блоб непосредственно к videoRef.srcObject?Или для типа BLOB-объектов нормально использовать src, и только потоки не могут использовать src?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

В дополнение к ответу Jib приведен фрагмент кода из MDN , подробно описывающий запасной вариант для поддержки старых браузеров:

const mediaSource = new MediaSource();
const video = document.createElement('video');
try {
  video.srcObject = mediaSource;
} catch (error) {
  video.src = URL.createObjectURL(mediaSource);
}
0 голосов
/ 04 июня 2018

URL.createObjectURL устарела только для потоков , но не для BLOB-объектов и медиа-источников.

Предупреждение MDN, на которое вы ссылаетесь, находится в разделе под названием Использование объектаURL для медиа потоков .Само предупреждение гласит:

Если у вас все еще есть код, основанный на createObjectURL () для присоединения потоков к медиа-элементам

Предпринята попытка осудить URL.createObjectURL, в частности, вокруг потоков , поскольку потоки по своей природе являются локальными объектами.

TypeError: Не удалось установить 'srcObject'свойство on' HTMLMediaElement

Похоже, ваш браузер еще не реализовал srcObject для BLOB-объектов.Это обычная атм.

Например, и Chrome, и Firefox имеют частичную поддержку для srcObject только для потоков, но не для BLOB-объектов, файлов или медиа-источников.

MDN для srcObject повторяет это:

По состоянию на ноябрь 2017 года браузеры поддерживают только MediaStream.Для MediaSource, Blob и File необходимо создать URL-адрес с помощью URL.createObjectURL () и назначить его для HTMLMediaElement.src.

...