• Media Session API 为当前正在播放的视频,音频,提供元数据来自定义媒体通知


    google 文档 https://developers.google.cn/web/updates/2017/02/media-session

    <html lang="zh-cmn-Hans">
    
    <head>
      <meta charset="utf-8">
      <title>ajanuw</title>
      <link rel="shortcut icon" type="image/ico" href="" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <!--移动端视图-->
      <meta name="renderer" content="webkit" />
      <meta name="keywords" content="ajanuw" />
      <!--关键词-->
      <meta name="description" content="ajanuw, b,c" />
      <!--网站内容描述-->
      <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
      <meta http-equiv="Pragma" content="no-cache" />
    </head>
    
    <body>
      <div class="audio-state">null</div>
      <audio poster="https://pic.cnblogs.com/avatar/1053296/20171128213246.png" src="http://dl.stream.qqmusic.qq.com/C400001IapGk0SNlnb.m4a?vkey=142B2367BEA057666BAA43D662C2E4329FC6B5C7BB02DC3F424D4DC3448F7A0ACCD2A3BB660F2E7C2D5AE61EDD1B6ADDFF1352D51EF5E7F6&guid=5617301546&uin=1641845087&fromtag=66"
        controls></audio>
      <button class="play-button">click 播放</button>
      <p>
        <div class="doc"></div>
      </p>
      <script>
        const audioSrcs = [
          'http://dl.stream.qqmusic.qq.com/C400001IapGk0SNlnb.m4a?vkey=142B2367BEA057666BAA43D662C2E4329FC6B5C7BB02DC3F424D4DC3448F7A0ACCD2A3BB660F2E7C2D5AE61EDD1B6ADDFF1352D51EF5E7F6&guid=5617301546&uin=1641845087&fromtag=66'
        ];
        let playButton = document.querySelector('.play-button');
        let audio = document.querySelector('audio');
    
        playButton.addEventListener('pointerup', function (event) {
          if (audio.paused) {
            audio.play()
              .then(_ => {
                document.querySelector('.audio-state').textContent = ' playing!'
                setMediaSession();
              })
              .catch(error => {
                console.log(error)
              });
          } else {
            audio.pause();
            document.querySelector('.audio-state').textContent = ' paused!'
          }
        });
    
    
        function setMediaSession() {
          if (!('mediaSession' in navigator)) {
            return;
          }
          document.querySelector('.doc').textContent = 'yes .'
          navigator.mediaSession.metadata = new MediaMetadata({
            title: 'Never Gonna Give You Up',
            artist: 'Rick Astley', // 艺术家 name
            album: 'Whenever You Need Somebody', // 专辑 name
            artwork: [{
                src: 'https://dummyimage.com/96x96',
                sizes: '96x96',
                type: 'image/png'
              },
              {
                src: 'https://dummyimage.com/128x128',
                sizes: '128x128',
                type: 'image/png'
              },
              {
                src: 'https://dummyimage.com/192x192',
                sizes: '192x192',
                type: 'image/png'
              },
              {
                src: 'https://dummyimage.com/256x256',
                sizes: '256x256',
                type: 'image/png'
              },
              {
                src: 'https://dummyimage.com/384x384',
                sizes: '384x384',
                type: 'image/png'
              },
              {
                src: 'https://dummyimage.com/512x512',
                sizes: '512x512',
                type: 'image/png'
              },
            ]
          });
          navigator.mediaSession.setActionHandler('play', function () {
            document.querySelector('.audio-state').textContent = ' playing!'
          });
          navigator.mediaSession.setActionHandler('pause', function () {
            document.querySelector('.audio-state').textContent = ' paused!'
          });
          let skipTime = 10; // Time to skip in seconds
    
          navigator.mediaSession.setActionHandler('seekbackward', function () {
            // 向后看
            // video.currentTime = Math.max(video.currentTime - skipTime, 0);
          });
          navigator.mediaSession.setActionHandler('seekforward', function () {
            // 向前看
            // video.currentTime = Math.min(video.currentTime + skipTime, video.duration);
          });
    
          navigator.mediaSession.setActionHandler('previoustrack', function () {
            // 用户点击了“上一首”媒体通知图标。
            // playPreviousVideo(); // load and play previous video
          });
          navigator.mediaSession.setActionHandler('nexttrack', function () {
            // 用户点击了“下一首”媒体通知图标
            // playNextVideo(); // load and play next video
          });
    
        }
      </script>
    </body>
    
    </html>
    
  • 相关阅读:
    windows RabbitMQ Server 环境配置中的一些坑
    Redis自定义fastJson Serializer
    如何使用Feign构造多参数的请求
    跨域访问支持(Spring Boot、Nginx、浏览器)
    chrome浏览器的跨域设置
    Jenkins手把手图文教程[基于Jenkins 2.164.1]
    Spring Boot 2发送邮件手把手图文教程
    poi读取Excel模板并修改模板内容与动态的增加行
    Lock类-ReentrantLock的使用
    类ThreadLocal的使用与源码分析
  • 原文地址:https://www.cnblogs.com/ajanuw/p/8422176.html
Copyright © 2020-2023  润新知