2016-04-21 9 views
0

Here sagt die Web-Audio-API funktioniert in Chrome für Android, und here Ich habe CM Browser, Chrome und CyanogenMod Standard Android 5.1.1 Browser getestet, und alle bestehen die Tests (speziell die biquadNode eins).Web Audio Api biquadFilter in Android benötigt zusätzliche Konfiguration?

Aber wenn ich this codepen mit einem eq (biquadNode) öffnen, kann ich die Musik hören, aber nicht die eq funktioniert.

Funktioniert BiquadNode in Android? Jede spezielle Implementierung wird benötigt?

* Code Stift

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; 
    } 
} 

Antwort

1

createMediaElementSource in Chrome auf Android funktioniert nicht im Allgemeinen schreiben erforderlich. Wenn Sie jedoch Chrome kürzlich (ab 49) erstellt haben, können Sie unter chrome://flags die Unified Media Pipeline-Option aktivieren. Das wird createMediaElementSource funktionieren wie auf dem Desktop.

+0

Dann muss ich meinen Website-Besuchern sagen, diese Option 'chrome: // flags/# enable-unified-media-pipeline' zu ​​aktivieren. – distante

+0

Ja. Wenn sie Chrome 49 und höher verwenden. Ich nehme an, dass dies eines Tages der Standard werden wird, aber ich weiß es nicht. –