2017-12-03 311 views
0

我正在尝试制作一个网站,可立即在立体声音频上执行相位取消。当我发现相位消除和所有它可以实现我认为它是惊人的,所以我想看看你是否可以在网上很快做到这一点,使它更有趣。createMediaElementSource从音频文件输入?

我找到了this Web Audio API post,这个例子正是我想要的(如果你按下卡拉OK按钮)。但是,它有点慢,它不适用于大文件。 The author also mentions this

真的,我应该使用mediaElement来操纵更长的音轨,因为我们真的不应该在javascript中进行复杂的处理。

我试图使用mediaElement,但我甚至无法弄清楚如何开始。我尝试这样做:

<input type="file" id="upload" accept="audio/*"> 

<script> 
    var upload = document.getElementById("upload"); 
    upload.addEventListener("change", function() { 
     var context = new (window.AudioContext || window.webkitAudioContext)(); 
     var source = context.createMediaElementSource(upload); 
     console.log(source); 
    }); 
</script> 

我得到的错误Failed to execute 'createMediaElementSource' on 'BaseAudioContext': parameter 1 is not of type 'HTMLMediaElement'.

我知道一个输入元素是不一样的声音元素,所以我不明白你怎么可以加载它作为一个MediaElement的。

任何帮助将不胜感激!

回答

1

createMediaElementSource()需要一个<audio>元素,所以如果我们创建一个并将文件数据传递给它,我们就得到了源代码。

​​

+0

非常感谢这一点,我想这样做的。但是,它似乎并不是一个特别干净的方法。很抱歉打扰你,但这是比这更干净的方式吗? – MysteryPancake