Javascript 如何结合SourceNode和Firefox设置HtmlLaudioElement的播放速率?
我正在尝试使用HtmlLaudioElement和AudioSourceNode测试播放音频。对于后面的应用程序,我需要两个功能:Javascript 如何结合SourceNode和Firefox设置HtmlLaudioElement的播放速率?,javascript,firefox,html5-audio,web-audio-api,javascript-audio-api,Javascript,Firefox,Html5 Audio,Web Audio Api,Javascript Audio Api,我正在尝试使用HtmlLaudioElement和AudioSourceNode测试播放音频。对于后面的应用程序,我需要两个功能: 回拨率改变后,球场必须保留 需要将卷更改为大于1的值 因为Feature2,我添加了AudioSourceNode和GainNode的变通方法 我需要在以后的应用程序中作为ArrayBuffer的音频文件,这就是我之前添加文件读取部分的原因 问题: 该代码适用于Chrome和Opera,但不适用于Firefox。回放速率设置为2,但音频信号的回放速率没有改变。为什么
时间收缩2
var audioContext=window.audioContext//默认值
||window.webkitAudioContext//Safari和Chrome的旧版本
||window.mozAudioContext
||虚假的;
函数播放(){
var fileInput=document.getElementById(“文件”);
var file=fileInput.files[0];
var reader=new FileReader();
reader.onload=函数(事件){
console.log(“完成!”);
log(event.srcielement.result);
var audioCtxt=新的audioContext();
var url=url.createObjectURL(新文件([event.srcElement.result],“test.wav”);
var player=新音频();
const source=audioCtxt.createMediaElementSource(播放器);
player.src=url;
console.log(“等待播放”);
player.addEventListener(“canplay”,函数(){
//创建增益节点以将音量设置为大于1
const gainNode=audioCtxt.createGain();
gainNode.gain.value=2.0;//将音量加倍
source.connect(gainNode);
连接(audioCtxt.destination);
player.playbackRate=2.0;
player.play();
player.playbackRate=2.0;
console.log(“回放速率为”+播放器.playbackRate);
});
};
reader.onprogress=函数(进度){
console.log(progress.loaded/progress.total);
};
reader.onerror=函数(错误){
控制台错误(error);
};
reader.readAsArrayBuffer(文件);
}
玩
鉴于您似乎已经知道原因:FF在此处被破坏。但是,不需要创建报告。。现在,为了解决这个问题,您真的需要在这里使用HTMLAudioElement吗?难道你不能用一个音频缓冲区来代替WebAudioAPI吗?@Kaido不幸的是,不能。保留音高的功能对我的应用程序非常重要。我以前使用过Web音频API,但为了保持音质,我不得不使用非常古老且未进一步开发的第三方库。这就是为什么我想切换到HTML5音频。也许我必须限制firefox用户的功能,并建议他们切换到Chrome…因为你似乎已经知道为什么:FF在这里被破坏了。但是,不需要创建报告。。现在,为了解决这个问题,您真的需要在这里使用HTMLAudioElement吗?难道你不能用一个音频缓冲区来代替WebAudioAPI吗?@Kaido不幸的是,不能。保留音高的功能对我的应用程序非常重要。我以前使用过Web音频API,但为了保持音质,我不得不使用非常古老且未进一步开发的第三方库。这就是为什么我想切换到HTML5音频。也许我必须限制firefox用户的功能,并建议他们切换到Chrome。。。