JSMad – 一个 JavaScript MP3 解码器

现代浏览器及其 JavaScript 引擎的速度总是让我惊叹不已。而且,人们在尝试让浏览器内部的东西正常工作时,会变得多么有创意,而不是依赖最终用户需要安装(更重要的是,需要持续更新)的插件。

JS MAd

最近让我惊叹不已的是 jsmadGitHub 上的源代码),由 Amos WengerJens NockertMatthias Georgi 开发。JSMad 是一个用 JavaScript 编写的 MP3 解码器!

“那又怎样?”你可能会说。好吧,有了 JSMad,这意味着 Firefox 现在可以播放 MP3 文件而无需任何 Flash。这也意味着您可以在浏览器中收听 MP3,而不会遇到 Linux 上的 64 位问题。使用 JSMad,我们可以深入研究 MP3 格式,不仅可以播放歌曲,还可以获取有关歌曲的信息。它使我们能够在不久的将来构建许多原生 DJ 混音器、采样器和音序器。

目前,JSMad 在 Firefox 4+ 和 Chrome 13.0+ 中运行,如果您在“about:flags”中启用 Web Audio API。

我记得 MP3 推出时,我当时的电脑太慢了,无法在 WinAmp 中对其进行编码而不会死机。当时,一个场景播放器也帮了我大忙。现在,我们是在浏览器而不是桌面应用程序中执行相同的操作。

关于 Chris Heilmann

HTML5 和开放 Web 的布道者。让我们来修复它!

更多 Chris Heilmann 的文章…


25 条评论

  1. CAFxX

    太可惜了,当标签未处于活动状态时,播放会卡顿。

    2011 年 6 月 19 日 06:22

    1. Amos Wenger

      正如 Mardeg 在下面提到的,这是一个 Firefox 错误(或者更确切地说,是一个特性)。

      我们可能会通过在检测到回调没有被频繁调用时写入比要求更多的音频缓冲区来临时解决此问题。

      当然,当 Audio 工作线程准备就绪时,我们将切换到它。在此之前,只需在单独的窗口中播放您的 mp3 :) 效果很好。

      2011 年 6 月 19 日 06:30

    2. Bram

      我没有遇到您描述的相同问题。无论我做什么,它都能正常播放。您机器上的 CPU 使用率是多少?

      2011 年 6 月 19 日 07:26

      1. Amos Wenger

        在 Firefox 4.0.1 中,该错误尚未出现。我在 Firefox 6.0a2 中遇到过。在我的 Linux 系统上,CPU 使用率在 6% 到 30% 之间,在 Windows 系统上约为 8-10%(两者都在 Firefox 4 下)。

        2011 年 6 月 19 日 08:01

  2. Mardeg

    当然,存在每秒使用 settimeout 太多次的问题,当标签失去焦点时,您可以在另一个标签中收听它,bug 633421 就会出现,然后您会遇到 bug 665000,在我的名字下链接。

    希望一旦 bug 615946(Audio 工作线程)得到实现,人们就可以切换到使用它们。

    2011 年 6 月 19 日 06:23

  3. x

    我想这可能仍然受专利限制。

    2011 年 6 月 19 日 07:18

    1. Amos Wenger

      可能不是,因为分发 libmad 的*源代码*是合法的。但是,分发二进制编解码器(即 libmad 的编译版本)需要获得 Thomson/Fraunhofer 的许可。

      编译 jsmad 的源代码(即尝试演示)属于非商业性个人使用,所以我想是可以的。不过我不是律师 :) 我们只是移植了 GPLv2 代码,我们会让法律专家来解决这个问题。

      2011 年 6 月 19 日 08:07

      1. x

        很有意思的是,想知道 GPL 许可证如何应用于网页上使用的 javascript。

        2011 年 6 月 19 日 08:58

  4. pd

    JS 中的 PDF 查看、JS 中的 MP3 解码。WebGL 和可能还有 WebCL。浏览器中的字体、浏览器中的文件管理……越来越多的浏览器似乎什么都能做……

    然而,我们仍然无法在任何浏览器中播放任何视频编解码器,*叹息*

    这是一个疯狂的世界。

    2011 年 6 月 19 日 11:20

    1. aa

      使用 webcl,这将成为可能(并且速度很快)。

      2011 年 6 月 19 日 13:36

  5. Dheeraj Yadav

    JSMad 意味着 Firefox 现在可以播放 MP3 文件而无需任何 Flash。
    这到底是如何工作的?这是使用插件的最佳解决方案,我正在使用许多 Flash 插件和其他媒体嵌入插件,现在我希望这种功能可以帮助我们移除这些插件。

    2011 年 6 月 20 日 05:09

  6. 访客

    刚刚使用 FF5 测试了该网站,效果完美!!
    即使您在同一窗口中查看其他标签,它也能正常工作 :)
    很棒的工作!谢谢!

    2011 年 6 月 20 日 06:32

  7. Bod

    Mozilla 是否对何时将在音频标签中添加 mp3 支持(或跟踪错误)有任何官方立场?我猜一旦它不再受专利保护,就不会有任何其他问题。(我知道 Vorbis 的质量更好,但 MP3 的安装基础非常庞大,在我看来这是一个压倒性的论点,AAC 有可能成为事实上的标准)。

    我看到一些声明表明 2011 年 12 月 8 日可能是所有播放专利到期(在美国,可能在其他地方更早)的日期。我还看到 2012 年 12 月 8 日,因此最好让 Mozilla、Wikimedia、Ubuntu 或 FSF 等受人尊敬的人对这件事发表意见,并用行动来支持他们的立场。

    我还看到有人建议,如果某些单独的专利仍然适用,则可以绕过它们。您可能能够创建一个 mp3,它可以在未来的 Firefox 以及 Flash、Safari、您的 iPod 等中播放,同时仍然无法在 Firefox 中播放任何和所有随机的 mp3。对于 Web 开发人员来说有点令人困惑,但总比没有好。

    顺便说一句,这是一个很酷的技巧。我本来想建议 Flac 也很酷,但似乎 I/O 而不是解码才是瓶颈,所以可能不可行。

    2011 年 6 月 20 日 07:03

  8. Jared

    Chrome 已经通过 HTML5 支持 MP3 播放。我以为 Firefox 4 也支持。我知道它支持 ogg。

    2011 年 6 月 20 日 07:47

    1. Kissaki

      它支持 OGG,因为这是一个免费的开放编解码器。
      但它不支持 MP3,因为 MP3 不是。

      2011 年 6 月 25 日 10:32

  9. Kissaki

    还没有关于如何使用或嵌入它的文档 :(

    2011 年 6 月 25 日 10:31

  10. Sharon

    IBM、Microsoft、IT、Cisco、Red Hat 安全等方面的 30 多年认证大师——如果可以修复,我发现这个很棒的程序有一个小问题。

    抱歉——我不得不卸载它,直到这个小问题得到修复;这是 JS 编码中的一个安全漏洞。插件本身实际上迁移到了 IE9 浏览器和 AOL 浏览器(哎呀,我不会使用 Google),这会给其他浏览器带来问题;我看到了这一点——尤其是在网络监控和 IE 开发功能中(使用工具栏中的 IE 9 选项卡并点击开发人员工具,启用它以便您可以看到它——它实际上仍在运行!)

    很棒的工作,但是您能否对其进行调整,使其插件不要一直运行?具有讽刺意味的是,当我使用 Sys Internals 时,它没有显示;除了我拥有的其他程序之外,但谢天谢地,有了 IE 9 中的开发人员工具,我才能发现这一点!

    以下是我的一项建议(也许?):在 FireFox 工具栏上,用户可以启用和禁用(I/O 开关),以便那些网速较慢或 CPU/GPU 较弱的用户、糟糕的 DNS 提供商,以及那些不理解这个“极客术语”概念或含义的普通家庭用户。(记住,我们对他们来说说的是火星语——微笑。)

    在 FF 5 及更高版本中,在 FF 工具栏上有一个 I/O(开/关)开关——如果他们想在 IE 9 中激活它,那么如果您用您的程序将其击倒,并且它受版权保护,您可能会让 IE 粉丝中的大量脚本小子感到非常恼火(对他们说“咯咯咯”!:P)……疯狂!

    我的意思是——I/O 开关将使人们能够首先加载此类程序,然后通过切换开关来启用您的程序(就像人们对拥有组合音响的人说“打开它”一样——您的程序基本上就是定义了这一点);这将解决“缓冲问题”。在不需要时将其关闭,并在需要时“打开它”,这将使 FF 使 Microsoft/Google/AOL 和其他谁在乎的浏览器……疯狂!:-D

    我发现它实际上与 Microsoft 的 Silverlight/HTML 5 也能很好地配合使用。

    但是……那里存在一个安全问题,它让漏洞的大门敞开;以上线索应该指导您,开发者在哪里可以找到它——尽快修复它,您就为自己建造了一个更好的捕鼠器,并且 FF 最好尽快将该程序版权化并给予您丰厚的回报!

    我可以想象——FireFox——唯一一个拥有每个人能力和灵活性的浏览器——如何使用这个简单的程序:理解他们在工具栏上的 I/O 开关及其工作原理将非常容易。我的意思是,这并不难或复杂。

    祝贺并向您致敬——您已经走到了前所未有的地方!(掌声)……

    现在只需要修复那个小小的“问题”就完成了!(这就是为什么我不得不卸载它)……

    请随时告知我们最新情况!!

    2011 年 6 月 29 日 07:11

  11. Andres G. Aragoneses

    您知道 WebAudio API 何时将在浏览器中默认启用吗?

    2011 年 8 月 14 日 06:58

    1. Amos Wenger

      好吧,它现在在 Chrome 14 版本中 :)

      2011 年 8 月 15 日 09:46

  12. Andres G. Aragoneses

    酷,Firefox 呢?

    2011 年 8 月 16 日 10:38

  13. daniel

    我仍然没有弄清楚它应该如何工作,找不到任何文档或操作指南 :(

    2011 年 9 月 15 日 07:59

    1. Amos Wenger

      是的,目前完全缺乏文档。

      幸运的是,我将在 jsconf.eu 上做一个关于它的演讲,所以我会详细解释它是如何工作的以及如何使用它 :)

      同时,我当然建议您查看 jsmad.org 的源代码,以了解它是如何使用播放器的——它实际上并不复杂,只是缺少一些更复杂的东西,比如搜索等。

      2011 年 9 月 16 日 00:43

  14. trusktr

    jsmad 加上 OpenGL……嗯嗯嗯

    2011 年 12 月 8 日 20:59

  15. Pithikos

    在我的系统上无法正常工作。在 Firefox 上,我得到的只是很小的、断断续续的声音片段。
    在 Chrome 和 epithany 上,我根本听不到任何声音。

    2012 年 3 月 21 日 05:33

  16. onok

    在 Firefox 上,我也遇到播放断断续续的情况。我还尝试了 flac 解码器。它也能工作,但在 Firefox 上播放也断断续续。
    在 Chrome 上,flac 和 mp3 播放器都能正常工作。

    2012 年 10 月 5 日 06:30

本文评论已关闭。