发布于 1970-01-01 08:00
  • 2 个回答
    • 我推测你的问题在于比如音频可能有100ms,但你想1000ms内播放100次。所以单纯的遍历是不能解决问题的,而且在极快的情况下,js所需要的时间也会被考虑进去延缓频率。

      可以试试多开几个音频,然后延时播放。比如说在10ms时播放第二个音频,20ms播放第三个...90ms播放最后一个,这样在100ms时第一个音频会再次循环,如此就可以达到10ms播放一次的频率。

      2022-11-25 03:24 回答
    • <audio>的接口里有声音播放速度的接口,但是多浏览器支持没有做过测试,楼主小心使用。

      myVid=document.getElementsByTag("audio");
      myVid.playbackRate=4;//大于1,就是高速播放
      

      当然,如果是声音里面有衰减或空白的部分,不想剪辑声音的话,可以用多个Audio同时循环播放,如下:

      var audios=[];
      for (var i= 0; i < 5; i++ ) {
          var a = new Audio();
          a.src = "" ;//填入你的音频地址
          a.preload="auto";
          a.loop = true;
          audios.push(a) ;
      }
      
      // 调用下面函数之前需要先确定audio已经完全载入,可以通过audio的readystate接口进行判断。
      //这里直接就写成立即执行的方式了。
      (function playSingle(i){
          //用递归写的,迭代也可行
          if ( i > 0 ) {
              audios[i-1].play() ;
              setTimeout(function(){
                  playSingle(i-1) ;
              },1000);//每隔1000毫秒,额外播放一个音频
          }
      })(audios.length) ;
      

      最后共五个音频先后循环播放,各延迟1000毫秒。当然可以通过调节毫秒数来达到更好的效果。

      2022-11-25 03:24 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有