【问题标题】:Web Audio API filter not working in SafariWeb 音频 API 过滤器在 Safari 中不起作用
【发布时间】:2015-06-05 23:29:01
【问题描述】:

我正在开发一个使用 Createjs 和 Web Audio API 的 HTML5 画布交互式作品。尽管 Chrome 和 FF 弃用了 webkitAudioContext 而不是 Safari,但我还是设法让音频在 Chrome/Firefox/Safari 中正常工作。但是,出于某种原因,过滤器在 Safari 中不起作用,但声音仍在播放。过滤器可以在 Chrome/FF 中使用。

我的过滤器设置如下:

var sound = new Audio();
sound.src = './sounds/sound.mp3';
sound.autoplay = false;
sound.loop = true;
soundSource = context.createMediaElementSource(sound);
var soundFilter = context.createBiquadFilter();
soundFilter.type = "lowpass";
soundFilter.frequency.value = 500;
soundSource.connect(soundFilter);
soundFilter.connect(context.destination);

我是否在不知不觉中使用了已弃用的术语或其他什么?现场项目可以找到here。干杯。

更新:这已被 WebKit 团队确认为真正的错误,并将进行修补。 Full details here

【问题讨论】:

    标签: javascript safari html5-canvas web-audio-api


    【解决方案1】:

    显然是Safari doesn't implement createMediaElementSource correctly。因此,它不会通过 Web 音频节点重定向声音,而是直接将声音播放到音频设备。

    您不能使用 BufferSourceNode 有什么特别的原因吗?它会让你跳过额外的环节来获取声音文件并对其进行解码,但它应该可以工作。

    【讨论】:

    • 我认为您的意思是“filter.LOWPASS”,而不是“soundFilter.LOWPASS”。我知道“filter.LOWPASS”现在已被弃用,但不幸的是,使用“filter.LOWPASS”在 Safari 中播放没有任何区别。我正在使用的音频包含在
    • 是的,除非我遗漏了什么,monkeypatch 是用于过时的项目,而不是真正的浏览器垫片。奇怪的 I found a filter example 在 Safari 中工作,但我不知道为什么。
    • 你说得对,在这种情况下要使用monkeypatch,你必须使用旧的常量并让补丁让它在新的浏览器上工作。这是假设“这种情况”是我认为的,但显然不是。
    • 我还没有找到任何关于 Safari 实现的最新程度的可靠信息。我的回答几乎是猜测。听起来过滤器可能不是问题。可能 createMediaElementSource 在 Safari 上无法正常工作。但是,如果它不起作用,但也没有抛出异常,那就太奇怪了。
    • 啊,就是这样。编辑答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    相关资源
    最近更新 更多