Video mediaDevices Назначить Blob To 'videoRef.srcObject' На месте 'src'

Will спросил: 10 мая 2018 в 04:32 в: javascript

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

videoRef.src = URL.createObjectURL(blob)

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

и https: // разработчик .mozilla.org / en-US / docs / Web / API / MediaDevices / getUserMedia

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

videoRef.srcObject = blob

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

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

2 ответа

Will ответил: 12 мая 2018 в 10:27
URL.createObjectURL только устарел для потоков ... Удивительный ответ. Спасибо!
Есть решение
jib ответил: 11 мая 2018 в 02:42

URL.createObjectURL устаревает только для потоков , а не blobs и mediasources.

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

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

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

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

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

Например. как Chrome, так и Firefox имеют частичную поддержку srcObject только для потоков, но не blob, file или mediasource.

MDN на srcObject повторяет это:

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

Дополнительное видео по вопросу: Video mediaDevices Назначить Blob To 'videoRef.srcObject' На месте 'src'

Как сделать прелоадер? ► CSS/JS

Capturing and Saving User Audio or Video with JavaScript

Уроки JavaScript Практика #2 Работаем с селектом