Android中的Web Audio Api biquadFilter需要额外配置吗?
问题描述:
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;
}
}
答
createMediaElementSource
在Android版Chrome中一般不起作用。但是,如果您有近期版本的Chrome(49及更高版本?),则可以转至chrome://flags
并启用统一媒体管道选项。这将使createMediaElementSource
像在桌面上一样工作。
然后我需要告诉我的网站访问者启用此选项'chrome:// flags /#enable-unified-media-pipeline' – distante
是的。如果他们使用Chrome 49及更高版本。我认为有一天这将成为默认,但我不知道。 –