Javascript 我想自动设置音频循环

Javascript 我想自动设置音频循环,javascript,html5-audio,Javascript,Html5 Audio,我得到了音频环路源,我想修复它。 当前,它在0秒时启动。 调整滑块时,该部分开始重复。 例如,重复开始3秒、结束10秒->3秒到10秒。 我想要的是重复默认值3到10秒,而不调整滑块 我在这个问题上徘徊了好几天。 谁来帮帮我 这是原始来源。 解码音频数据示例 解码音频数据示例 玩 停止 设置播放速率 1 设置循环开始和循环结束 0 0 //定义变量 让audioCtx; 让源; 让歌曲长度; const pre=document.querySelector('pre'); const my

我得到了音频环路源,我想修复它。 当前,它在0秒时启动。 调整滑块时,该部分开始重复。 例如,重复开始3秒、结束10秒->3秒到10秒。 我想要的是重复默认值3到10秒,而不调整滑块

我在这个问题上徘徊了好几天。 谁来帮帮我

这是原始来源。


解码音频数据示例
解码音频数据示例
玩
停止
设置播放速率
1
设置循环开始和循环结束
0
0
//定义变量
让audioCtx;
让源;
让歌曲长度;
const pre=document.querySelector('pre');
const myScript=document.querySelector('script');
const play=document.querySelector('.play');
const stop=document.querySelector('.stop');
const playbackControl=document.querySelector(“.playbackrate control”);
const playbackValue=document.querySelector('.playbackrate value');
playbackControl.setAttribute('disabled','disabled');
const loopstartControl=document.querySelector('.loopstart control');
const loopstartValue=document.querySelector('.loopstart value');
loopstartControl.setAttribute('disabled','disabled');
const loopendControl=document.querySelector('.loopendControl');
const loopendValue=document.querySelector('.loopendValue');
setAttribute('disabled','disabled');
//使用XHR加载音频曲目,然后
//解码音频数据,将其解码并粘贴在缓冲区中。
//然后我们将缓冲区放入源代码中
函数getData(){
if(window.webkitAudioContext){
audioCtx=new window.webkitAudioContext();
}否则{
audioCtx=新窗口。AudioContext();
}
source=audioCtx.createBufferSource();
请求=新的XMLHttpRequest();
request.open('GET','viper.mp3',true);
request.responseType='arraybuffer';
request.onload=函数(){
让audioData=request.response;
audioCtx.decodeAudioData(音频数据,功能(缓冲区){
myBuffer=缓冲区;
songLength=buffer.duration;
source.buffer=myBuffer;
source.playbackRate.value=playbackControl.value;
source.connect(audioCtx.destination);
source.loop=true;
loopstartControl.setAttribute('max',Math.floor(宋体长度));
loopendControl.setAttribute('max',Math.floor(宋体长度));
},
函数(e){“解码音频数据时出错”+e.Error});
}
request.send();
}
//接线按钮停止和播放音频,范围滑块控制
play.onclick=函数(){
getData();
source.start(0);
play.setAttribute('disabled','disabled');
playbackControl.removeAttribute(“已禁用”);
loopstartControl.removeAttribute(“已禁用”);
loopendControl.removeAttribute(“已禁用”);
}
stop.onclick=函数(){
源。停止(0);
play.removeAttribute(“禁用”);
playbackControl.setAttribute('disabled','disabled');
loopstartControl.setAttribute('disabled','disabled');
setAttribute('disabled','disabled');
}
playbackControl.oninput=函数(){
source.playbackRate.value=playbackControl.value;
playbackValue.innerHTML=playbackControl.value;
}
loopstartControl.oninput=函数(){
source.loopStart=loopstartControl.value;
loopstartValue.innerHTML=loopstartControl.value;
}
loopendControl.oninput=函数(){
source.loopEnd=loopendControl.value;
loopendValue.innerHTML=loopendControl.value;
}
//将脚本转储到pre元素
pre.innerHTML=myScript.innerHTML;

分享你的研究成果对每个人都有帮助。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另请参见:分享您的研究有助于每个人。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另见: