如何在 Chrome 的全局媒体控件中使用 blob URL 作为图像源?
How to use a blob URL as an image source in Chrome's Global Media Controls?
我正在尝试自定义 Chrome 的全局媒体控件中的显示。所以我用 navigator.mediaSession.metadata
来设置标题和其他东西,它起作用了。
但我也想设置背景图片,如下例所示:
我尝试使用以下代码:
navigator.mediaSession.metadata.artwork = [{sizes, src, type}];
但是 src
是一个 blob URL,像这样:blob:http://localhost:3000/8afe91b0-4689-4f6b-9984-21aedc834253
我知道这个 blob URL 没问题,因为我可以将它用作 <img>
源并且它已正确显示。
我也尝试获取 blob 本身并使用 URL.createObjectURL()
但这给了我另一个(有效的)blob URL 但它并没有更好地工作。
最后说明:我认为我设置 artwork
属性 的方式是正确的,因为如果我使用“常规”图像 URL,它会起作用。
编辑 1:
我刚刚发现,虽然它在通过 按钮激活的控制视图中不起作用,但当我使用键盘媒体键时图像显示正确:
编辑 2:
另一个发现:它对 JPG 图像有效(即使用 blob URL 作为 src
),但对 PNG 图像无效。
我最终使用了 JPG 图片,效果很好。
所以,我的结论是:你可以使用 blob URL 作为插图来源,如下:
navigator.mediaSession.metadata.artwork = [
{
sizes: '150x200',
src: 'blob:https://blablabla.com/4065a1d2-a23b-4cff-8ccd-3c6bce6e3b55',
type: 'image/jpeg'
}
];
我的另一个结论是 PNG 图像存在错误(请参阅我的问题中的 EDIT 1)。
我正在尝试自定义 Chrome 的全局媒体控件中的显示。所以我用 navigator.mediaSession.metadata
来设置标题和其他东西,它起作用了。
但我也想设置背景图片,如下例所示:
我尝试使用以下代码:
navigator.mediaSession.metadata.artwork = [{sizes, src, type}];
但是 src
是一个 blob URL,像这样:blob:http://localhost:3000/8afe91b0-4689-4f6b-9984-21aedc834253
我知道这个 blob URL 没问题,因为我可以将它用作 <img>
源并且它已正确显示。
我也尝试获取 blob 本身并使用 URL.createObjectURL()
但这给了我另一个(有效的)blob URL 但它并没有更好地工作。
最后说明:我认为我设置 artwork
属性 的方式是正确的,因为如果我使用“常规”图像 URL,它会起作用。
编辑 1:
我刚刚发现,虽然它在通过
编辑 2:
另一个发现:它对 JPG 图像有效(即使用 blob URL 作为 src
),但对 PNG 图像无效。
我最终使用了 JPG 图片,效果很好。
所以,我的结论是:你可以使用 blob URL 作为插图来源,如下:
navigator.mediaSession.metadata.artwork = [
{
sizes: '150x200',
src: 'blob:https://blablabla.com/4065a1d2-a23b-4cff-8ccd-3c6bce6e3b55',
type: 'image/jpeg'
}
];
我的另一个结论是 PNG 图像存在错误(请参阅我的问题中的 EDIT 1)。