2017-12-03 313 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