我的团队的任务是构build一个全屏幕的亭式应用程序来播放媒体文件。 最初,我们需要支持WMV / MP4以及一些完整的1080p图像,尽pipe下面我们需要扩展它以涵盖其他格式(不同的vIDeo格式以及HTML,SWF等的显示)。
该应用程序还包含一个体面的块业务逻辑有关的调度,日志logging,性能监测以及networking代码通过Web服务(或可能是TCP)与中央服务器交谈,并可能作为服务器本身。
对于我们的WMV / MP4vIDeo播放,硬件加速将是一个巨大的好处。 目标硬件有弱的cpu,但强大的显卡。
下面是kicker:我们是一个.NET商店(我们现有的应用程序是一个WinForms智能客户端),并且在C#和.NET堆栈中经验丰富且高效。 该应用程序最初将面向windows Embedded(.NET 3.0), 但我们也将很快需要linux版本。 在我们之间,我们有一些C / C ++的经验和一些linux的经验,但我们并不期望在该平台上有良好的生产力。
Build()错误与GTK#和Monodevelop Arch
这是linux Mono应用程序中的内存泄漏吗?
selectDataGrIDVIEw单元格时发生ObjectdisposedException?
防止IO.GetDirectorIEs()从符号链接
如何在单声道中embedded闪存?
所以我在以下几点上特别提出build议:
vIDeo。 在windows上,我们已经看到了使用DirectShow.NET取得的成功。 在有能力的硬件上,WPF MediaElement似乎也performance良好。 我们应该在linux上使用什么? libavcodec似乎是一个普遍的select。 在linux上的NVIDia显卡上硬件加速吗? 我们还有什么其他select在linux上? 有什么跨平台的,我可以考虑?
堆栈。 a)理想情况下,我们可以将所有东西写在.NET中,然后在linux上的Mono下运行。 Mono上不支持vIDeo播放和其他一些组件(如性能监视)。 我想我们可以重写这些元素,比如C ++; 但我猜测业务逻辑方面的大多数东西都可以工作。 b)也许最好是在windows版本上放弃我们的前期生产力,以便跨平台出门。 那Java呢? 那里的vIDeo有不同的select吗? 另一个框架呢? 像QT的东西? 任何人都可以提出一些跨平台的东西吗?
一般来说,根据要求,你会用什么?
我很感激你可能拥有的任何一个。
不显示Mono linux上的Latin-1非ASCII码符号
在Mono上运行sqlite
在linux上运行ASP.Net与标准的以微软为中心的解决scheme相比如何?
在非windows平台上签名PowerShell脚本?
英特尔单核cpu中的OpenCL被SIGXcpu杀死(Ubuntu)
我的建议是,您可以使用Fluendo的GStreamer组件进行视频回放,因为它支持硬件加速,并提供完全授权的编解码器。
如果您安装了Fluendo / GStreamer软件包,您可以查看支持视频播放的Banshee媒体播放器。 获取OpenSUSE 11.2,其中包含您尝试开发所需的一切,然后购买并安装Fluendo编解码器。
源代码明智,Banshee从C#做的视频显示,看看这里:
使用GStreamer进行视频渲染的C#源代码在这里:
http://git.gnome.org/browse/banshee/tree/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying
调用Fluent的C支持库可以在这里找到:
http://git.gnome.org/browse/banshee/tree/libbanshee
为了测试Banshee,您不需要购买任何东西,但是您的视频编解码器将仅限于Ogg / Theora编码的视频。 一旦你得到Fluendo的编解码器,你将能够播放WMV文件。
一种选择是使用Silverlight,并探索Moonlight作为linux版本的一个选项。 我的理解是,月光有几个媒体/编解码器插件(我相信ffmpeg是主要的提供者),并可以另外使用MS编解码器包,以支持像WMV / MP4的东西。
您可以在单声道和.net中使用ffmpeg 。 这可能包括或不包括视频显示–ffmpeg通常只是提供一个解码的位图,你可以做任何你想要的,无论是显示在一个窗口,保存在一个文件中,无论如何。 如果你使用ffmpeg-sharp,相同的代码应该可以在windows或者linux上运行。 真的,把位图放在一个窗口中是很容易的部分。
Moonlight提供了两种编解码器:(a)直接来自Microsoft的完全许可版本,不需要与MPEG-LA和其他专利持有人进一步协商,或者(b)ffmpeg后端需要您与专利股东进行谈判你打算使用。
您可以构建一个基于Silverlight的应用程序,访问本地系统的技巧非常简单:您运行一个公开这些服务的本地Web服务器。
您仍然可以使用C#/ sqlite或VistaDB作为您的存储系统作为Silverlight应用程序的一部分。
您可以在http://localhost/App.xap中托管Silverlight应用程序,通过在http://localhost/rest.ashx或http:// localhost上联系REST或SOAP Web服务,此应用程序将获得对本机的本地访问/soap.asmx
例如,如果您需要从连接到本机的扫描仪读取一些值,则可以发出以下请求:
http://localhost/scanner.ashx *** 作= scan_badge
然后你的scanner.ashx httpHandler将执行实际的扫描(这个有完整的系统权限)并将值返回给Silverlight应用程序。
总结以上是内存溢出为你收集整理的跨平台的多媒体信息亭全部内容,希望文章能够帮你解决跨平台的多媒体信息亭所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)