我要写一个自定义的多媒体播放器。它将嵌入到Web浏览器中,并通过SSL连接从服务器接收数据。
所需的功能是:
我认为Adobe Flash(或Flex)。但我对这项技术知之甚少。我最关心的是多媒体解码。
您可以为此项目推荐Adobe Flex或其他任何内容吗?我可以通过这种方式遇到什么陷阱?
修改
Flash Player不支持MPEG4或VoIP音频编解码器。因此,要使用Flash,我需要设置多媒体流服务器并将我的媒体转码为支持的格式(H.264 / AAC)。它比我预期的解决方案成本更高。
我应该检讨哪些替代方案? Java小程序?的ActiveX? Windows Media Player?
答案 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路线:
我傻了2美分。
答案 2 :(得分:1)
纯HTML5 / CSS3 / javascript和耐心让观众赶上现代浏览器。 不自己实现视频解码,你只需创建另一个利基产品。
说真的,如果您的产品今天的内容足够令人信服,那么人们会在那里。专注于您的产品,而不是您的技术。