Media Session API

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

PC浏览器的媒体控制按钮

手机、平板端看控制中心


<!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>
posted @ 2024-04-29 16:00  _clai  阅读(34)  评论(0编辑  收藏  举报