我已经构建了一个应用程序,旨在播放每个声音,因为第一个声音是通过使用'已结束'事件完成的。
在我的初始版本中,每个声音都有自己的音频元素,结果如下:
function play_next_audio(){
speaker = $('audio#' + sounds[i++]).get(0);
speaker.addEventListener('ended',play_next_audio);
speaker.play();
}
这适用于所有桌面浏览器,包括Safari,但不会超越iOS上的第一个字母。
我还尝试了一种不同的方法 - 一个音频元素依次加载每个声音。在那里,我尝试绑定'结束'事件以及加载第一个和绑定'canplaythrough'事件。在这两种情况下,它甚至无法在桌面Safari上工作 - 这次成功播放了第一个两个字母。
以下是孤立的测试:
http://dev.connectfu.com:42001/app/test-sounds.html
请注意,audio.load()被注释掉了几个地方 - 将它放入或取出似乎没有任何区别。
我做错了什么?如何在iOS上播放一系列声音?非常感谢你的帮助!
答案 0 :(得分:13)
更新截至2017年,在几种情况下,iOS上的Safari(或Chrome)上的结束事件无法触发。可以在此处找到更多信息:It's almost 2017, and HTML5 audio is still broken on iOS。
我已经在iOS上的Safari上构建了一个“工作”的HTML5音频播放器(Chavah Messianic Radio)。
通过“工作”,我的意思是,它在苹果公司瘫痪的iOS< audio>上发挥得最好。实现。在撰写本文时,这包括iOS 5.我已经在iPhone 3及更高版本以及iPad原版,iPad 2和iPad 3上进行了测试。
以下是我的发现:
希望这会有所帮助。
< rant>
与此同时: Apple,拜托,请在iOS Safari中为我们提供更好的HTML5支持。以下是您的行动项目Apple:
做那些事情,Apple,你将成为移动HTML5音频的行业领导者,每个人都会模仿你,你将再次领先,网络应用程序将在你的平台上完美运行,同时瘫痪其他移动平台。是的,这些功能将使用数据和电池,但原生应用已经这样做了。停止削弱网络应用程序并成为领导者。 制作HTML5< audio> iOS上的一流公民。
< /咆哮>
答案 1 :(得分:0)
我不相信iOS中的音频或视频支持.play()方法。 Apple不喜欢在访问页面时自动播放视频或音频的想法。
以下是有关跨平台的HTML5音频支持状态的有用阅读材料:http://www.phoboslab.org/log/2011/03/the-state-of-html5-audio