【问题标题】:Tone.js not playing audio on iOSTone.js 不在 iOS 上播放音频
【发布时间】:2023-01-26 23:53:14
【问题描述】:

我有一个使用 Tone.js 的应用程序,我专门使用 GrainPlayer 对象。 它在不同操作系统和设备的不同浏览器上工作得很好...... 除了iOS。我个人没有 iOS 设备,但客户告诉我 iOS 没有播放音频。它也不限于野生动物园;他们设备上的其他浏览器也不会播放音频。

我知道这是一个特定于 Tone.js 的问题,因为我也将 Howler.js 用于一些不需要 Tone GrainPlayer 类的声音,并且这些声音有效。一般来说,这也不是 AudioContext 问题,因为我有以下代码:

Tone.setContext(Howler.ctx);

这确保了 Tone 的 AudioContext 通过 Howler 的 AudioContext 进行路由。

有没有办法让它播放?由于其独特的属性和功能,我需要继续使用 GrainPlayer,因此不幸的是,切换出去对我来说不是一个解决方案。 我无法从开发人员的角度对其进行诊断,因为我又没有 iOS 设备,即便如此,他们也无法启动开发人员控制台…… 但它似乎并没有破坏代码或任何东西,只是它似乎“忽略”了播放的声音,然后继续前进。

有问题的声音是这样创建的:

standardChord[0] = new Tone.GrainPlayer('/A.flac').connect(Howler.masterGain);

然后在需要播放时:

standardChord[0].start();

就像我说的那样,在其他设备上运行良好。

最后,不确定这是否重要,但它是我正在运行的 Meteor 应用程序,捆绑到 Node.js 中进行部署。

【问题讨论】:

  • 找到任何解决方案?我遇到了同样的问题......

标签: ios audio tone.js


【解决方案1】:

在我的项目中,我有一条简单的代码行可以在我的initAudio() 方法中完成这项工作:

// necessary for Safari
synth.context.resume();

synth 只是一个合成器振荡器。

但如果 iPhone 或 iOS 设备静音,此解决方案将不起作用。

附言。在 iOS 16.2 上测试

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-03
    • 2021-11-11
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 2014-03-29
    相关资源
    最近更新 更多