Javascript 如何结合SourceNode和Firefox设置HtmlLaudioElement的播放速率?

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,但音频信号的回放速率没有改变。为什么

我正在尝试使用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。。。