Media Session API

news/发布时间2024/5/15 8:14:20

Media Session API 控制媒体播放和自定义媒体通知


<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Media Session API</title></head><body><audio id="audio" src="./tts.mp3"></audio><button type="button" id="btn-play">播放</button><button type="button" id="btn-pause">暂停</button><script>// 允许我们控制媒体播放和自定义媒体通知。这意味着我们可以定义媒体元数据,如标题、艺术家、专辑和插图,并响应媒体相关事件,如播放、暂停、下一个和上一个// Media Session API: 当前媒体会话并保存所有元数据和播放控制的对象// 通过提供与媒体相关的事件、动作和元数据来控制媒体播放/** @type {HTMLAudioElement} */const audioDOM = document.getElementById('audio');const playBtn = document.getElementById('btn-play');const pauseBtn = document.getElementById('btn-pause');// 创建媒体元数据const metaData = new MediaMetadata({// 媒体标题title: '音乐标题',// 媒体类型artist: '艺术家',// 媒体专辑album: '专辑',// 媒体封面artwork: [{ src: 'http://p2.music.126.net/txQOuRf20d2fKbuyxhtNRA==/109951166512080386.jpg?param=130y130', sizes: '150x150', type: 'image/png' },{ src: 'http://p2.music.126.net/txQOuRf20d2fKbuyxhtNRA==/109951166512080386.jpg?param=130y130', sizes: '500x500', type: 'image/png' },],});// 设置媒体元数据navigator.mediaSession.metadata = metaData;console.log("navigator.mediaSession => ", navigator.mediaSession)playBtn.addEventListener('click', () => {audioDOM.play();})pauseBtn.addEventListener('click', () => {audioDOM.pause();})// 监听媒体事件navigator.mediaSession.setActionHandler('play', () => {audioDOM.play();console.log('play');});navigator.mediaSession.setActionHandler('pause', () => {audioDOM.pause();console.log('pause');});navigator.mediaSession.setActionHandler('nexttrack', () => {console.log('next track');});navigator.mediaSession.setActionHandler('previoustrack', () => {console.log('previous track');});</script></body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/66425571.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

IT维护部门的绩效考核怎么做?

又到了年末,每年一度的考核又要开始了,王经理也越来越紧张,作为公司IT系统维护部门的领导,他是有苦说不出。 费力不讨好 在公司里,维护部门一直是一个弱势部门,人数不少,整天也没闲着,围着公司团团转,一旦有需求还都是急活,各个都是领导,真是忙的脚打后脑勺。可是…

mybatisPlus执行save方法获取自动填充的主键id

使用user1.getId(); 实测有效。 更多直接参考这篇文章:mybatis-plus中的save方法保存后会返回id吗 - CSDN文库

Asp .Net Core 系列:国际化多语言配置

目录概述术语本地化器IStringLocalizer在服务类中使用本地化IStringLocalizerFactoryIHtmlLocalizerIViewLocalizer资源文件区域性回退配置 CultureProvider内置的 RequestCultureProvider实现自定义 RequestCultureProvider使用 Json 资源文件设计原理IStringLocalizerFactory…

制作一个能构建 dotnet AOT 的 gitlab ruuner 的 Debian docker 镜像

我的需求是需要有一个能够构建出 dotnet 的 AOT 包的环境,要求这个环境能解决 glibc 兼容依赖的问题,能打出来 x64 和 arm64 的 AOT 的包,且能够运行 gitlab runner 对接自动构建需求 以下是我列举的需求支持制作能在 UOS 系统和麒麟系统上运行的包 支持制作出来的包是 AOT …

Python高阶--闭包

闭包作用:可以用来在一个函数与一组私有变量之间创建关联关系,在给定函数被多次调用的过程中,这些私有变量能够保持其持久性(保存运行环境与变量的状态) 闭包的特征:1.必须要有函数的嵌套,而且外层函数必须返回内层函数。外层函数相当于给内层函数提供了一个包装起来的运…