linux - 跨平台多媒体信息亭

标签 linux video mono cross-platform ffmpeg

我的团队的任务是构建一个全屏、信息亭式的应用程序来播放媒体文件。最初我们需要支持 WMV/MP4 以及一些全 1080p 的图像,尽管接下来我们需要扩展它以涵盖其他格式(不同的视频格式以及 HTML、SWF 等的显示)。

该应用程序还包含大量与调度、日志记录、性能监控相关的业务逻辑以及通过 Web 服务(或 TCP)与中央服务器通信的网络代码,并可能充当服务器本身。

对于我们的 WMV/MP4 视频播放,硬件加速将是一个巨大的好处。目标硬件的 CPU 较弱,但显卡较强。

关键在于:我们是一家 .NET 商店(我们现有的应用程序是 WinForms 智能客户端),并且在 C# 和 .NET 堆栈方面经验丰富且高效。该应用程序最初将针对 Windows Embedded (.NET 3.0),但是我们很快也需要 Linux 版本。我们拥有一些 C/C++ 经验和一些 Linux 经验,但我们预计该平台的生产力不会很高。

因此,我专门就以下几点征求建议:

  1. 视频。在 Windows 上,我们已经看到使用 DirectShow.NET 取得了巨大成功。在功能强大的硬件上,WPF MediaElement 似乎也表现良好。我们应该在 Linux 上使用什么? libavcodec 似乎是一个常见的选择。 Linux 上的 NVidia 显卡是否有硬件加速? Linux 上我们还有哪些其他选择?我可以考虑一些跨平台的东西吗?

  2. 堆栈。 a) 理想情况下,我们可以在 .NET 中编写整个内容,然后在 Linux 上的 Mono 下运行。 Mono 不支持视频播放和其他一些组件(如性能监控)。我想我们可以用 C++ 等语言重写这些元素;但我猜业务逻辑方面的大多数东西都可以工作。 b) 也许最好放弃 Windows 版本的前期生产力,转而使用跨平台的东西。那么Java呢?当谈到那里的视频时,我们有不同的选择吗?另一个框架怎么样?类似QT之类的吗?其他人可以建议一些相关的跨平台内容吗?

一般来说,考虑到要求,您会使用什么?

感谢您提供的任何答案。

最佳答案

我的建议是您使用 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

调用 Fluendo 的 C 支持库可在此处找到:

http://git.gnome.org/browse/banshee/tree/libbanshee

为了测试 Banshee,您不需要购买任何东西,但您的视频编解码器将仅限于 Ogg/Theora 编码的视频。一旦您获得 Fluendo 的编解码器,您将能够播放 WMV 文件。

关于linux - 跨平台多媒体信息亭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2112309/

相关文章:

video - 全高清视频转FLV,浏览器播放慢

java - 如何播放所有在线视频

linux - .NET配置系统对带有MKBundle的Mono的依赖性

c# - 使用命令行单声道构建 zeromq helloworld 示例

c - 如果我想用非阻塞套接字调用 SSL_shutdown(),我是否需要先继续调用 SSL_read() 直到它产生 SSL_ERROR_WANT_READ?

c++ - 在 Linux (Ubuntu) 中将命令行输出打印到文本文件中

javascript - Bootstrap 模式的目标 ID,用于在模式关闭时停止播放视频

c# - 切换到 Linux Debian 上的程序

linux - Linux shell 中的排序和唯一性

linux - 如何测量进程的堆栈大小?