需正确配置MediaSession接口并提供HTTPS协议的PNG/JPEG封面图(≥96×96像素),显式调用setMediaSession关联媒体元素,换歌时须新建MediaMetadata实例完整更新artwork等字段,并按平台特性调试验证。

要在系统控制中心(如iOS锁屏、Android通知栏、macOS控制中心)显示当前播放曲目的封面,需正确配置 MediaSession 接口并提供有效的封面图片资源。
设置 MediaSession 的 metadata 属性
封面图通过 mediaSession.metadata 中的 artwork 字段指定,它是一个 MediaImage[] 数组,用于适配不同分辨率和设备需求。
- 必须至少包含一个尺寸不小于 96×96 像素的图片(推荐 512×512 或更高)
- 图片格式建议使用 PNG 或 JPEG;WebP 在部分平台支持有限,慎用
- 图片 URL 必须是 HTTPS 协议(HTTP 仅在 localhost 或安全上下文下可能临时允许)
- 避免使用 data URL(多数系统不支持解析)
为 mediaElement 显式启用 MediaSession
确保音频/视频元素与 MediaSession 关联,否则系统无法读取元数据:
使用 Playwright 为 jimeng.jianying.com 管理浏览器会话,导入 cookies/localStorage 以自动化视频生成工作流,支持图片上传等功能
- 在创建
<audio></audio>或<video></video>元素后,立即设置mediaElement.setMediaSession(mediaSession) - 若使用自动播放或用户手势触发播放,应在播放前完成 session 配置(如
play()调用前) - 不要依赖浏览器自动关联 —— 显式调用
setMediaSession是可靠做法
动态更新封面和元信息
切换曲目时,需重新赋值 mediaSession.metadata,不能只改部分字段:
立即学习“前端免费学习笔记(深入)”;
- 每次换歌都应创建新的
MediaMetadata实例,完整传入 title、artist、album 和 artwork - artwork 数组中每个对象需含
src、sizes(如 "512x512")、type(如 "image/png") - 示例代码片段:
mediaSession.metadata = new MediaMetadata({<br> title: "Blinding Lights",<br> artist: "The Weeknd",<br> album: "After Hours",<br> artwork: [<br> { src: "/covers/blinding-lights-96.png", sizes: "96x96", type: "image/png" },<br> { src: "/covers/blinding-lights-512.png", sizes: "512x512", type: "image/png" }<br> ]<br>});
检查兼容性与调试技巧
并非所有平台对 MediaSession 封面支持一致,需针对性验证:
- iOS Safari:需启用
playsinline并确保页面有用户手势激活(如点击播放),否则可能忽略 metadata - Android Chrome:要求页面处于活跃标签页且媒体正在播放(暂停状态通常不显示封面)
- macOS Safari / Chrome:支持良好,但需注意本地文件协议(file://)下完全禁用 MediaSession
- 调试建议:在 Chrome DevTools 的 Application → Manifest 标签页查看 “Media Session” 面板是否显示封面预览;iOS 可通过锁屏实际测试


















