【问题标题】:Web Audio Api biquadFilter in Android needs extra configuration?Android 中的 Web Audio Api biquadFilter 需要额外配置吗?
【发布时间】:2016-08-15 06:19:09
【问题描述】:

Here 说 Web 音频 API 在 Chrome for Android 中工作,here 我已经测试了 CM 浏览器、Chrome 和 CyanogenMod 默认的 Android 5.1.1 浏览器,并且都通过了测试(特别是 biquadNode 之一)。

但是当我使用 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;
  }
}

【问题讨论】:

    标签: android web-audio-api


    【解决方案1】:

    Android 上的 Chrome 中的createMediaElementSource 通常无法正常工作。但如果您有最新版本的 Chrome(49 及更高版本?),您可以转到 chrome://flags 并启用统一媒体管道选项。这将使createMediaElementSource 像在桌面上一样工作。

    【讨论】:

    • 然后我需要告诉我的网站访问者启用此选项`chrome://flags/#enable-unified-media-pipeline`
    • 是的。如果他们使用的是 Chrome 49 及更高版本。我认为有一天这将成为默认设置,但我不知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多