我在PhoneGap应用程序上使用Howler.js。因为我的音频文件很大(超过10Mb)我将缓冲区属性设置为true(强制HTML5音频)。
var theSound = new Howl({
urls: ['assets/Sound.m4a'],
buffer: true,
sprite: {
scene0 : [ 1966000, 27000] }
当我在模拟器和iPad Mobile Safari上测试我的应用程序时,一切正常。但是当我作为应用程序在iPad上运行应用程序时,音频永远不会启动。使用Web检查器我已经注意到音频文件试图一次又一次地加载,就像一个不结束的循环。您可以在Web检查器上查看模拟器和iPad上的资源选项卡的附加屏幕截图,运行相同的PhoneGap应用程序。
关于可能出现什么问题的任何想法?
答案 0 :(得分:3)
我一直在研究这个问题。
从我收集的内容来看,Howler默认使用Web Audio API,而this SO answer表示您需要一个“用户输入事件”才能使其在iOS上运行,因为默认情况下它会使所有内容静音。 我甚至在iOS 2的iPad 2上尝试过Howler自己的交互式演示(我还没有更新)here并且没有任何声音工作。我的第一个链接有一个指向Apple文档的链接,我还没有尝试过,但看起来像Howler的便利性必须被更低级别的实现取代,大约需要5-10行XMLHTTPRequest(参见Apple链接) ),或另一个更多功能的库。我还在了解我到底需要什么,但我有一个非常类似的问题,我今天一直致力于解决。
然后Howler又回归到HTML5 Audio。好的,所以我现在只是在Google上搜索,link comes up,它只是让我想起各种浏览器与浏览器布局引擎与操作系统之间的OGG ACC MP3等兼容性考虑因素。所以我相信你的文件格式M4A,据我所知,与MP3目标浏览器无法正常工作。我还不熟悉但没有给出确切的具体信息,但是因为Howler不能在我的iPad上工作,这证明至少存在问题。
我选择使用咆哮的全部意义是抽象以上所有内容!我现在要去寻找另一个更全面的图书馆= D
答案 1 :(得分:3)
问题可能是文件大小。 IPad的缓存大小有限,如果溢出,资产将无效。解决此问题的唯一方法是缩小文件大小。另一种可能性是除了用户事件(触摸)之外,html音频不会加载或播放。 Web Audio将加载但开始静音,只能通过用户事件内的播放调用取消静音。
SoundJS是我帮助开发的库,可以处理尽可能多的这些东西。特别是我认为你会发现Mobile Safe Approach很有用。它在iOS和Android设备上经过了充分测试。不幸的是我们还不支持声音精灵。
希望有所帮助。