Раньше вы могли использовать URL.createObjectURL()
и передавать ему MediaStream. Однако это было удалено (см. https://www.fxsitecompat.dev/en-CA/docs/2017/url-createobjecturl-stream-has-been-deprecated/).
Функциональность замены заключалась в том, чтобы вместо этого использовать HTMLMediaElement.srcObject
. Это делает хорошую работу по покрытию видеокейса.
Однако HTMLImageElement
не наследуется от HTMLMediaElement
. У него также нет srcObject.
В моем конкретном случае я разрабатываю плагин FireFox, который использует функциональность потока фильтра WebRequest для преобразования изображений. С помощью этого API я получаю фрагменты данных ArrayBuffer. Я хотел бы иметь возможность передавать их по мере получения на Image()
, который декодирует их на лету, а не просто накапливает их, превращая в BLOB-объект, а затем преобразовывая в URL-адрес через URL.createObjectURL(blob)
.
Есть ли способ сделать это в потоковом режиме?
(Примечание 1: я согласен с конкретным решением FireFox, если это необходимо.)
(Примечание 2: я попытался установить HTMLVideoElement
src, например, в PNG, но оказалось, что элемент видео действительно привередлив и поддерживает только форматы видео, а не неподвижные изображения. Если бы я мог заставить HTMLVideoElement.srcObject
загружать неподвижные изображения, это могло бы сделать возможным решение на основе MediaStream. , слишком).