- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
过去,您可以使用 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 数据 block 。我希望能够在收到它们时将它们流式传输到一个 Image()
中,它正在动态解码它们,而不是简单地累积它们,将它们变成一个 Blob,然后再转换成一个 URL通过 URL.createObjectURL(blob)
。
有没有办法以流式传输的方式完成此操作?
(注意 1:如果需要,我可以使用 FireFox 特定的解决方案。)
(注意 2:我尝试将 HTMLVideoElement
src 设置为例如 PNG,但看起来视频元素确实很挑剔,只支持视频格式而不是静止图像。如果我能得到 HTMLVideoElement。 srcObject
来加载静止图像,这也可能使基于 MediaStream 的解决方案成为可能)。
最佳答案
URL.createObjectURL( MediaStreamInstance )
已被弃用,URL.createObjectURL( BlobInstance )
或此方法的其他有效输入(如 MediaSource)均已弃用。
MediaStreams 只能公开视频和音频媒体数据,我找不到确切的引述,但 reading the specs 说得很清楚,而且 MediaStreamTrack.kind
只能是 "audio"
或 "video"
。
就像您无法设置 <img src="video.mp4">
一样,您永远无法将 MediaStream 传递给 <img>
,所以这对您来说不是问题,并且 URL.createObjectURL
将按您的意愿工作:
const img = document.getElementById( 'img' );
fetch( "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png" )
.then( (resp) => resp.arrayBuffer() )
.then( (buf) => {
const blob = new Blob( [buf], { type: 'image/png' } );
img.src = URL.createObjectURL( blob );
} );
<img id="img">
在 <img>
中拥有 true 流的唯一方法是通过 MJPEG format 。
已经决定不再允许使用 MediaStreams,因为作者经常没有在他们应该撤销它的时候撤销它,并且由 blobURI 链接的 MediaStream 必须保持事件状态,这意味着即使是硬件源如果本地流必须在此 blobURI 的整个生命周期内保持运行(在某些情况下可能会很长)。
当所有主流浏览器最终都支持 MediaStreams 的 MediaElement.srcObject
属性时,保留它就没有意义了。
Here is a long discussion that occurred on the specs' repo .
Here is Firefox's bug report.
Here is Chrome's one .
(请注意,唯一被删除的是通过 blobURI 使 <iframe>
或 <object>
指向此类 MediaStream 的能力,但没有真正的用例来使用这些而不是 <video>
元素。 )
关于javascript - HTMLImageElement - src 作为流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58138514/
有人可以帮助解决 TypeScript 错误吗: Property 'srcset' does not exist on type 'DetailedHTMLProps, HTMLImageEleme
我正在动态创建一些图像元素,一切都很好,但是当我尝试将这些图像包装在 li 元素中时,我在 DOM 中得到了奇怪的响应,即:[object HTMLImageElement ]。 这是代码,请注意元素
例如,input element of type=image 的 HTML 规范包括以下关于处理该元素的 src 字段的内容: if the download was successful and t
我今天尝试在浏览器控制台中编写 image: HTMLImageElement 。我预计会发生错误,但事实并非如此。 这不会像 TypeScript 上的 var image: HTMLImageEl
我正在使用 javascript 访问嵌套在某些 中的 img 元素.之后我想将这些图像添加到字符串变量中。 我是这样写的: var SomeVariable=""; $("myDivId img"
我正在尝试创建预加载器,但是当我运行它时,控制台显示以下内容: Loaded [object HTMLImageElement] of 5 从这行代码 console.log('Loaded ' +
我正在使用 Chrome 和内置开发人员工具。我在控制台中执行以下操作 $('.votes > a > img')[0] 我明白了 但如果我这样做 $('.votes > a > img')[0].
我有以下 jQuery,我想输出图像列表。问题是我无法通过“this”找到来源。它当前是一个输出为 HTMLImageElement 的对象。如何从该对象获取图像源? $("#imgs li.im
过去,您可以使用 URL.createObjectURL() 并向其传递一个 MediaStream。但是,这已被删除(请参阅 https://www.fxsitecompat.dev/en-CA/d
我正在使用 Three.js 用 JavaScript 编写动画循环模块的初稿。现在我卡在所有图像似乎都已加载的位置,但随后我收到一个控制台错误,显示 GET/[object%20HTMLImag
这个问题在这里已经有了答案: Check if file exists but prevent 404 error in console from showing up [duplicate] (1
我创建了一个包含 2 个图像的数组并尝试显示它们,但我得到的不是图像而是文本: 对象 HTMLImageElement 我确信我的图像位于我当前正在使用的正确目录中。
我有以下 Canvas 图像: 我知道标有绿色的点的坐标,我需要添加图像作为叠加层,但我也需要倾斜图像。 我知道如何将图像放置在正确的位置,但我不知道如何倾斜它。 var div = document
我正在改造我的网站,我想要一个 Minecraft 服务器状态小部件,我从 MCAPI.net 找到了一个非常好的小部件。他们有一个演示 HTML + JS 代码,我使用并修改为我自己使用。代码将所有
我尝试拦截 HTMLImageElement 的 Image() 构造函数: https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageEle
我需要为所有图像添加“错误”事件监听器。但应该使用 window.HTMLImageElement 添加(或通过 window.HTMLImageElement.constructor、window.
我正在开发图像调整大小功能。我应该每次将图像缩小 25%,直到达到所需的尺寸。我尝试调试我的代码,但当图像已经加载并且我更改了 src 时,它似乎没有触发另一次加载。 generateData
我正在尝试异步加载图像,并且只有在加载图像时才在 React 应用程序中显示它。 componentDidMount() { const img = new Image(); img.
我正在尝试异步加载图像,并且只有在加载图像时才在 React 应用程序中显示它。 componentDidMount() { const img = new Image(); img.
我想在光标的当前位置插入图像,但使用我当前的代码,它显示:[object HTMLImageElement]而不是显示实际图像。这就是我所拥有的: handleImage(picture){
我是一名优秀的程序员,十分优秀!