使用 MediaSession API 控制 Web 媒体播放

在现代的 web 应用程序中,多媒体播放已经成为了很常见的功能。为了提供更好的用户体验,我们可以使用 MediaSession API 来控制网页中的媒体播放。

什么是 MediaSession API?

MediaSession API 允许网页控制媒体会话,例如音频和视频的播放。通过 MediaSession API,你可以向操作系统和浏览器提供关于正在播放的内容的元数据信息,如歌曲名称、艺术家名称和封面图像,还可以接收来自系统的媒体控制事件。

如何开始使用 MediaSession API?

步骤 1:检查浏览器支持

首先,我们需要检查用户的浏览器是否支持 MediaSession API。你可以通过以下方式来检查:

if ('mediaSession' in navigator) {// 支持 MediaSession APIconsole.log('MediaSession API 可用');
} else {// 不支持 MediaSession APIconsole.log('MediaSession API 不可用');
}
步骤 2:设置媒体会话信息

一旦确认浏览器支持 MediaSession API,我们可以设置媒体会话信息,例如:

navigator.mediaSession.metadata = new MediaMetadata({title: '歌曲标题',artist: '艺术家名称',album: '专辑名称',artwork: [{ src: '封面图像 URL', sizes: '96x96', type: 'image/png' },{ src: '封面图像 URL', sizes: '128x128', type: 'image/png' },{ src: '封面图像 URL', sizes: '192x192', type: 'image/png' },{ src: '封面图像 URL', sizes: '256x256', type: 'image/png' },{ src: '封面图像 URL', sizes: '384x384', type: 'image/png' },{ src: '封面图像 URL', sizes: '512x512', type: 'image/png' },]
});
步骤 3:处理媒体控制事件

当用户通过操作系统或设备上的媒体控制按钮(如播放、暂停、下一曲、上一曲)时,我们可以捕获这些事件并执行相应的操作:

navigator.mediaSession.setActionHandler('play', function() {// 处理播放事件audio.play();
});navigator.mediaSession.setActionHandler('pause', function() {// 处理暂停事件audio.pause();
});navigator.mediaSession.setActionHandler('previoustrack', function() {// 处理上一曲事件audio.currentTime -= 10; // 倒退 10 秒
});navigator.mediaSession.setActionHandler('nexttrack', function() {// 处理下一曲事件audio.currentTime += 10; // 前进 10 秒
});

结论

通过使用 MediaSession API,我们可以更好地与用户设备上的媒体控制按钮进行集成,提供更一致和流畅的媒体体验。不仅如此,还可以在操作系统和浏览器中显示有用的媒体信息,以增强用户对正在播放内容的认知和控制能力。

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

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

相关文章

C/C++混合编译说明

C调用C的函数: C的头文件中声明,被C调用的函数,是以C的方式编译 C的头文件: #ifdef __cplusplus extern "C" { #endif void func_c(void); #ifdef __cplusplus } #endif C调用C的函数: C的源文件中声明&#xff…

Windows操作防火墙命令

Windows操作防火墙命令 启用防火墙: netsh advfirewall set allprofiles state on禁用防火墙: netsh advfirewall set allprofiles state off添加新的入站规则允许端口80(HTTP): netsh advfirewall firewall add r…

Python生成器嵌套太多?使用yield from秒变简洁!

目录 1、yield from基础概念 🌐 1.1 yield关键字回顾 1.2 yield from引入动机 2、yield from深入解析 🧭 2.1 语法与用法 2.2 传递生成器控制权 2.3 与迭代器的高效整合 2.4 与传统yield对比优势 3、实战应用示例 📈 3.1 链接多个生成器 3.2 简化递归生成器实…

Git之checkout/reset --hard/clean -f区别(四十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Elasticsearch:倒数排序融合 - Reciprocal rank fusion - 8.14

警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。语法可能会在正式发布之前发生变化。Elastic 将努力修复任何问题,但技术预览中的功能不受官方正式发布功能的支持 SLA 约束。 倒数排序融合 (reciprocal rank fusion - RRF) 是一…

【数学】Leetcode 50. Pow(x, n)【中等】

Pow(x, n) 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示例 2: 输入:x 2.10000, n 3 输出&#xf…

wireshark抓包方法及常用过滤命令

wireshark是一个抓包小能手,排查网络问题的时候常常离不开,网上的使用教程也有很多,但多数是抓的有线数据包,本文主要介绍使用wireshark抓空口包的方法和常用命令。 -----再牛逼的梦想,也抵不住傻逼般的坚持&#xff…

OpenAI: 禁止在不支持的地区使用其 API

OpenAI 给开发者发邮件表示,禁止其 API 用于不被允许的地区,否则 7 月 9 日将面临封杀。 本次封杀似乎不区分 IP ,而是直接按照地理位置。

电商数据自动化批量采集:商品数据|订单数据|店铺数据|图片搜索|关键字搜索

电商竞争白热化的今天,一个电商卖家往往会在多个平台铺设店铺来获取更多的客户。有没有什么高效的电商数据采集方式呢? 针对主流电商平台数据采集、ERP、OA等业务系统数据采集、行业数据采集,可以用以下5种电商数据采集方式: API…

【Linux】Ubuntu 部署 Zabbix 7.0

实验环境:Ubuntu-22.04 官方下载地址: 下载Zabbix 7.0 LTS for Ubuntu 22.04 (Jammy), MySQL, Apache 1、下载 Zabbix 官方安装包以及环境配置 下载 zabbix 安装包 wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabb…

Perl如何进行错误处理和创建子程序详解

在Perl中创建子程序(类似于其他编程语言中定义函数)的基本语法如下: 使用sub关键字:这是定义子程序的关键字。 子程序名称:可以是任何有效的Perl标识符。 参数列表:子程序可以有零个或多个参数&#xff0…

Spring-Boot整合Redis【随记】

基于spring boot整合. 1 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2 编写redis的配置文件 application.yml进行编写. 属性: url por…

Django网站开发技术的应用(理论篇)

概述 Django提供了许多功能。比如在安全方面上Django提供了csrf防护机制以防止跨域脚本攻击、使用身份验证机制以防止未授权的登录等等。在数据库方面上Django提供了orm&#xff08;面向对象的数据库访问技术&#xff09;方便了对数据库的操作。此外Django还提供自定义模板、缓…

掌握Three.js:学习路线,成为3D可视化开发的高手!

学习Three.js可以按照以下路线进行&#xff1a; 基础知识&#xff1a; 首先要了解基本的Web开发知识&#xff0c;包括HTML、CSS和JavaScript。如果对这些知识已经比较熟悉&#xff0c;可以直接进入下一步。 Three.js文档&#xff1a; 阅读Three.js官方文档是学习的第一步。官…

(更新)2004-2022年 全国各省环境污染治理投资额数据

环境污染治理投资额是衡量一个国家或地区在环境保护和污染治理方面投入力度的重要经济指标。它体现了政府和企业在改善环境质量、推动绿色发展方面的共同努力&#xff0c;同时也是环境规制政策执行强度的一个反映。 数据简介 环境污染治理投资额涵盖了以下几个方面&#xff1…

APP软件系统的开发流程

APP软件系统的开发是一个复杂的过程&#xff0c;需要多方面的知识和技能。建议选择专业的开发团队进行开发&#xff0c;以确保APP的质量和成功。APP软件系统的开发流程通常包括以下几个阶段。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合…

react获取use声明的变量的值

在React中&#xff0c;使用useState Hook 可以让你在函数组件中添加状态。useState返回一个状态变量&#xff08;当前的值&#xff09;和一个用于更新这个状态变量的函数。要获取useState中的值&#xff0c;你只需要直接使用这个状态变量即可。 下面是一个简单的例子&#xff…

ONLYOFFICE 桌面编辑器 8.1全新发布,更强大的编辑工具

ONLYOFFICE 8.1 一、什么是ONLYOFFICE&#xff1f;二、怎么安装 ONLYOFFICE 8.1三、主要功能介绍四、总结 一、什么是ONLYOFFICE&#xff1f; ONLYOFFICE 是一款功能强大的办公套件&#xff0c;旨在提供全面的文档、表格和演示文稿编辑解决方案。它集成了文字处理、电子表格和演…

基于Hexo+GITHUB搭建个人博客网站(PS:不用域名,不用服务器,重点是免费,小白也能轻松掌握)

✌ 作者名字&#xff1a;高峰君主 &#x1f4eb; 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步&#x1f440; &#x1f4ac; 人生格言&#xff1a;没有我不会的语言&#xff0c;没有你过不去的坎儿。&#x1f4ac; &#x1f5…

TMGM外汇:新兴市场的崛起,未来的经济引擎吗?

随着全球经济版图的不断变化&#xff0c;新兴市场逐渐成为国际投资的热点。从亚地区的中国和印度&#xff0c;到拉丁美洲的巴西和墨西哥&#xff0c;再到非洲的尼日利亚和南非&#xff0c;新兴市场的经济活力和潜力引起了全世界的关注。这些市场不仅人口众多&#xff0c;而且在…