我想使用JavaScript来展示音频文件的波形,但我甚至不知道如何入手。我找到了Audio Data API,但我对大多数音频术语不熟悉,也不知道提供了什么或如何操作它。我找到了一些JavaScript中的波形示例,但它们过于复杂/我无法理解其中的内容。那么我的问题是:如何使用JavaScript在画布上创建歌曲的波形,并且背后的过程是什么?
我想使用JavaScript来展示音频文件的波形,但我甚至不知道如何入手。我找到了Audio Data API,但我对大多数音频术语不熟悉,也不知道提供了什么或如何操作它。我找到了一些JavaScript中的波形示例,但它们过于复杂/我无法理解其中的内容。那么我的问题是:如何使用JavaScript在画布上创建歌曲的波形,并且背后的过程是什么?
这篇文章来自BBC的R&D团队,展示了他们如何使用JS库等方法生成波形图。所有结果都是公开可用的,而且相当不错。
与其使用音频数据API(无法确保所有用户的浏览器都支持),还不如在服务器端生成波形数据(BBC团队创建了一个C ++应用程序来完成此项工作),这样至少就将客户端显示方面与播放方面分离开来。另外,请记住,在计算峰值和渲染波形之前,整个音频文件必须先到达浏览器。我不确定流式传输文件(例如MP3)是否可以在文件到达时用于计算峰值。但总的来说,最好在服务器端计算峰值,然后通过JSON发送数据(甚至可以在服务器端创建+缓存图形 - 有许多PHP图表库,或者您可以使用GD本地创建)。
对于在浏览器上播放,有几个非常好的(非Flash!)选项。个人而言,我喜欢SoundManager 2,因为其代码完全与显示分离,这意味着我可以自由地创建任何UI /显示(或客户端想要的)。我发现它很强大、可靠,尽管在一个项目中有多个播放器时一开始遇到了些困难。他们网站上的示例不太好(依我看),但您可以发挥想象力做出一些很酷的东西。SM2还有一个可选的Flash回退选项,适用于老式浏览器。
目前支持不太好,但可以看看这个 Firefox 音调生成器。