您可以推荐哪种工具链来编写嵌入到Web浏览器中的自定义多媒体播放器?

时间:2011-10-05 20:41:57

标签: flash applet activex browser media-player

我要写一个自定义的多媒体播放器。它将嵌入到Web浏览器中,并通过SSL连接从服务器接收数据。

所需的功能是:

  • MPEG4视频和不同的VoIP音频解码(例如G.711或G.729)
  • 自定义控件
  • 波形表示(或只是灵活的绘图API)

我认为Adobe Flash(或Flex)。但我对这项技术知之甚少。我最关心的是多媒体解码。

您可以为此项目推荐Adobe Flex或其他任何内容吗?我可以通过这种方式遇到什么陷阱?

修改

Flash Player不支持MPEG4或VoIP音频编解码器。因此,要使用Flash,我需要设置多媒体流服务器并将我的媒体转码为支持的格式(H.264 / AAC)。它比我预期的解决方案成本更高。

我应该检讨哪些替代方案? Java小程序?的ActiveX? Windows Media Player?

3 个答案:

答案 0 :(得分:5)

嗯,你可以使用Silverlight做到这一点; Silverlight具有允许您为其提供原始H.264帧的接口,它将显示它们。事实上,netflix的在线流媒体视频播放器是用silverlight编写的。如果这样可行,那可能是你最好的选择。

如果这不起作用,而且Flash不会这样做,那么你可能会尝试java(不知道是否可行或不知道,但我的猜测是缺少java许多客户端机器都是障碍物)或编写自己的插件/ activex控件。

除了繁重的学习曲线之外,ActiveX控件的主要挑战是您必须以某种方式将其安装在客户端计算机上。当你谈论媒体播放器时,这更加棘手,因为那时你可能需要处理声音驱动和视频渲染;为了呈现高质量的视频,你需要使用硬件加速,这意味着你需要使用directx和/或opengl,假设你正在瞄准windows。此外,ActiveX控件仅适用于IE,而不适用于任何其他Web浏览器。

但是,如果您选择使用插件/ activex路线,我强烈建议您查看FireBreath; FireBreath是一个浏览器插件框架和抽象,用于编写跨平台和跨浏览器插件。 Flash和Silverlight本身就是activex控件和npapi插件,我知道至少有两个使用FireBreath编写的媒体播放器。这将是从插件角度处理问题的最简单方法,但您必须使用C ++。不要误会我的意思 - 即使使用FireBreath,这也不是一件容易的事,但至少它解决了在浏览器中托管的许多最棘手的部分。

插件的主要优点是你几乎可以做任何事情 - 使用硬件渲染,访问文件系统等。这是最灵活的选择。插件的主要缺点是你几乎可以做任何事情 - 崩溃浏览器,删除文件,打开安全漏洞,如果你不小心等等。

我想最后的选择是使用ajax请求,在javascript中进行解码,然后渲染到Chrome中的Web画布,但我猜这仍然不太现实=]

祝你好运,希望有所帮助。

答案 1 :(得分:1)

@Taxilian的答案很棒。

为了好玩,你可以去HTML5路线:

  • 自己在js中重新实现G.711 / G.729(受到jsmad mp3 decoder的启发)
  • three.js中进行绘制,当不可用时自动从WebGL回退到画布

我傻了2美分。

答案 2 :(得分:1)

纯HTML5 / CSS3 / javascript和耐心让观众赶上现代浏览器。 自己实现视频解码,你只需创建另一个利基产品。

说真的,如果您的产品今天的内容足够令人信服,那么人们会在那里。专注于您的产品,而不是您的技术。