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

标签 javascript audio html5-audio web-audio-api

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

我正在研究 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 播放器 - 但它更繁琐吗?

最佳答案

网络音频在移动设备上运行良好。

网络音频,对比 <audio> , 分解并让开发人员精确控制音频的加载、解码和播放。如果您需要音频的精确计时(例如节拍同步),您可能应该使用网络音频。 <audio>很不精确。

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

关于javascript - 用于复杂播放列表的 Web Audio API 或 <audio>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49573172/

相关文章:

javascript - 鼠标悬停时显示div

javascript - 将className添加到li item React中

objective-c - 如何用 iPad 录制声音?

javascript - 音频文件在线时,如何在HTML5音频对象中设置currentTime?

html - 在HTML5上显示音频的元数据

javascript - 从 glob 中排除 d.ts 文件

javascript - 尽管/g,.replace() 不会替换每个实例

python - 在 Python 中读取 .sph 文件

audio - C++中的音频播放控件

javascript - 使用 new Audio(),有什么方法可以找出音频文件是否存在?