我有一个使用 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 中进行部署。