用于复杂播放列表的Web Audio API或<audio>?

时间:2018-03-30 11:00:38

标签: javascript audio html5-audio web-audio

我是一个Javascript dilettante。我需要创建一个移动查看网页来部署动态创建但最终线性的音频片段。基本上我需要加载播放列表,其中一些轨道是固定的,但其他轨道是从较大的池中随机选择的;还需要在一些轨道之间进行定时暂停。它只需要很少的控制,可能只是播放/暂停。

我正在研究Web Audio API和基本HTML5 <audio>标记。我选择它们的两个主要问题是兼容性使用简单性

兼容性点上,我看到on the main page for the API itself它没有列出对Android的支持,但在this more detailed rundown上,几乎所有浏览器都列为绿色。什么是最好的信任来源?

假设Web Audio API适用于移动部署,我是否需要使用它?它会让我的生活变得更轻松还是仅仅因为我的目的而被制服了?我看到它有一个方便的onended事件处理程序,我认为自己用于排队和精确的计时功能。在成功时使用回调函数异步加载文件似乎更明确 - 我想要一个加载屏幕以便有用。

我对<audio>的功能不太清楚。我想它必须能够做我想要的一切,因为在Web Audio API出现之前已经构建了HTML5播放器 - 但它是否更加繁琐?

1 个答案:

答案 0 :(得分:2)

Web Audio在移动设备上运行良好。

<audio>相比,Web Audio分散开来,让开发人员可以精确控制音频的加载,解码和播放。如果您需要音频的精确定时(例如,节拍同步),您应该使用网络音频。 <audio>非常不精确。

尽管如此,一些警告 - 由于Web Audio默认使用内存缓冲区,它可以使用比<audio>更多的内存,并且它没有本机组件来执行流式音频。引发事件不是正确链接音频的正确方法,因为它是主线程-Javascript回调(也就是说,任何像这样的事件处理可能会被其他JS,垃圾收集等延迟。 - 它可能会关闭50或100毫秒)。如果您真的关心计时,则必须提前计划并使用Web Audio计划。 (This article我写的更详细地描述了这一点。)