2016-04-21 43 views
0

Here說Web音頻API適用於Android的Chrome和here我已經測試了CM Browser,Chrome和CyanogenMod默認的Android 5.1.1瀏覽器,並且都通過了測試(特別是biquadNode之一)。Android中的Web Audio Api biquadFilter需要額外配置嗎?

但是,當我用eq(biquadNode)打開this codepen時,我可以聽到音樂但聽不到eq的工作。

biquadNode在android中有效嗎?任何特殊的實施需要?

*所需的代碼筆張貼

var context = new AudioContext(); 
var mediaElement = document.getElementById('player'); 
var sourceNode = context.createMediaElementSource(mediaElement); 

// EQ Properties 
// 
var gainDb = -40.0; 
var bandSplit = [360,3600]; 

var hBand = context.createBiquadFilter(); 
hBand.type = "lowshelf"; 
hBand.frequency.value = bandSplit[0]; 
hBand.gain.value = gainDb; 

var hInvert = context.createGain(); 
hInvert.gain.value = -1.0; 

var mBand = context.createGain(); 

var lBand = context.createBiquadFilter(); 
lBand.type = "highshelf"; 
lBand.frequency.value = bandSplit[1]; 
lBand.gain.value = gainDb; 

var lInvert = context.createGain(); 
lInvert.gain.value = -1.0; 

sourceNode.connect(lBand); 
sourceNode.connect(mBand); 
sourceNode.connect(hBand); 

hBand.connect(hInvert); 
lBand.connect(lInvert); 

hInvert.connect(mBand); 
lInvert.connect(mBand); 

var lGain = context.createGain(); 
var mGain = context.createGain(); 
var hGain = context.createGain(); 

lBand.connect(lGain); 
mBand.connect(mGain); 
hBand.connect(hGain); 

var sum = context.createGain(); 
lGain.connect(sum); 
mGain.connect(sum); 
hGain.connect(sum); 
sum.connect(context.destination); 

// Input 
// 
function changeGain(string,type) 
{ 
    var value = parseFloat(string)/100.0; 

    switch(type) 
    { 
    case 'lowGain': lGain.gain.value = value; break; 
    case 'midGain': mGain.gain.value = value; break; 
    case 'highGain': hGain.gain.value = value; break; 
    } 
} 

回答

1

createMediaElementSource在Android版Chrome中一般不起作用。但是,如果您有近期版本的Chrome(49及更高版本?),則可以轉至chrome://flags並啓用統一媒體管道選項。這將使createMediaElementSource像在桌面上一樣工作。

+0

然後我需要告訴我的網站訪問者啓用此選項'chrome:// flags /#enable-unified-media-pipeline' – distante

+0

是的。如果他們使用Chrome 49及更高版本。我認爲有一天這將成爲默認,但我不知道。 –