如何在断网状态下播放缓存的音频?

作者站长头像
站长
· 阅读数 20
    setaudioBlob(dataurl, name) {
      fetch(dataurl)
        .then(response => {
          if (!response.ok) {
            throw new Error('Network response was not ok');
          }
          return response.blob();
        })
        .then(blob => {
          let reader = new FileReader();
          reader.onloadend = function () {
            let base64data = reader.result; // 这里得到的是一个"data:*/*;base64,..."格式的字符串
            // 存储到localStorage
            localStorage.setItem(name, base64data);
          };
          reader.readAsDataURL(blob);
        })
        .catch(error => {
          console.error('Error', error);
        });
    },
    getaudioBlob(name) {
      let base64data = window.localStorage.getItem(name)

      // 分离出MIME类型和实际的Base64内容
      let dataParts = base64data.split(';base64,');
      let contentType = dataParts[0].split(':')[1];
      let base64String = dataParts[1];

      // 将Base64字符串转换回Blob
      let decodedData = window.atob(base64String);
      let arrayBuffer = new ArrayBuffer(decodedData.length);
      let uint8Array = new Uint8Array(arrayBuffer);

      for (let i = 0; i < decodedData.length; i++) {
        uint8Array[i] = decodedData.charCodeAt(i);
      }

      let restoredBlob = new Blob([uint8Array], { type: contentType });
      return restoredBlob
      // let audioElement = new Audio(URL.createObjectURL(restoredBlob));
      // audioElement.play().catch(error => console.error(error));
    },,我是mp3文件,我理解是只要浏览器能正常播放wav,转化播放应该没啥问题

断网播放声音?

在网络连接的时候加载audio,然后在断网的时候播放音频,希望他走缓存,就很奇怪,有时候可以走缓存,有时候不行,请求接口,但是是脱机状态就请求失败,怎么设定缓存永久,一直走缓存,不重新请求接口如何在断网状态下播放缓存的音频?他会走个这个,启动器也看不到

回复
1个回答
avatar
test
2024-06-23

转base64后存localstorage了

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容