全面的 html5 音频 API

Posted

技术标签:

【中文标题】全面的 html5 音频 API【英文标题】:Comprehensive html5 Audio API 【发布时间】:2011-12-02 15:29:16 【问题描述】:

对于我的一生,我找不到所有 html5 <audio> 事件和属性的完整列表(尽管我相信它们可能因浏览器而异)。我的很多谷歌搜索都有网站谈论“使用 javascript 音频 api”或“使用 javascript 音频 api”等,并展示了几个示例,但我没有找到方法列表或它们的作用。

例如,

var a = document.getElementById('audio');
a.ended = function ()  alert('foo!'); ; //FAIL
a.onended = function ()  alert('foo!'); ; //FAIL
a.addEventListener('ended', function ()  alert('foo!'); ; //PASS
a.addEventListener('play', function ()  alert('foo!'); ;

为什么没有onended?为什么叫play 而不是played?这些东西并不直观,因此 API 的实际列表会很有帮助。

另外,有些浏览器不尊重上述属性吗?我的黑莓手机和 mobile-ie9 不会在活动结束时发出警报,但 chrome、ffx 和 ipad-safari 都会发出警报。

【问题讨论】:

对 HTML 5 的支持仍然普遍很糟糕,而且 IE 并不是因为与标准配合得很好而臭名昭著。可以在here 中找到媒体对象的新 HTML 5 事件处理程序列表,但我预计至少一两年内不会得到广泛的支持。 <audio> 元素及其 JavaScript API 相对较新。支持可能会在一段时间内发生变化。 【参考方案1】: HTML5 spec: the audio element When can I use... audio compatibility tables(以及指向外部资源的链接)

不幸的是,您亲身经历了there simply is no official JavaScript API for audio(尚未)的事实。

【讨论】:

【参考方案2】:

正如您从 Matt 的精美 canIuse 链接中看到的那样

“对音频的一致跨浏览器支持目前是一团糟 HTML5 ...”

所以你应该看看 sound.js ;)

"... 但是 SoundJS 致力于抽象出问题并让 更容易为您的游戏或丰富体验添加声音。 "

--> Polyfill : SoundJS

【讨论】:

【参考方案3】:

w3schools 有一个有用的音频/视频事件、属性和方法列表。虽然它没有解决跨浏览器的问题:

http://www.w3schools.com/tags/ref_av_dom.asp

【讨论】:

以上是关于全面的 html5 音频 API的主要内容,如果未能解决你的问题,请参考以下文章

rtmp规范1.0全面指南

音视频开发系列——全面了解Android MediaFormat

HTML HTML5表单模板(全面,有效,语义)

干货|前端开发全面知识库

HTML5+CSS3-全面详解(学习总结---从入门到深化)

音视频开发系列——全面了解Android MediaExtractor