2009-09-24 111 views
7

我们有一个具有模拟摄像机的设备。我们有一张卡片对其进行采样并将其数字化。这一切都在directx中完成。此时,更换硬件不是一种选择,但我们需要进行编码,以便我们可以实时看到此视频馈送,而不管任何硬件或将来发生的底层操作系统更改。实现IP摄像机

沿着这条线,我们选择了Qt来实现一个GUI来查看这个摄像头源。但是,如果我们将来转向Linux或其他嵌入式平台,并更换其他硬件(包括摄像机/视频采样器所在的物理设备),我们还需要更改相机显示软件,这将是一个痛苦,因为我们需要将它集成到我们的GUI中。

我建议迁移到一个更抽象的模型,其中数据通过套接字发送到GUI,视频在从套接字流中解析后实时显示。

首先,这是个好主意还是坏主意?

其次,你将如何实现这样的事情?视频采样器通常如何提供可用输出?我怎样才能通过套接字推送这个输出?一旦我在接收端解析输出,我如何知道如何处理输出(如何获得输出渲染)?我能想到的唯一事情就是将每个样本写入一个文件,然后在每次新样本到达时显示该文件的内容。这对我来说似乎是一个低效率的解决方案,如果它能工作的话。

你如何建议我处理这个问题?是否有任何跨平台的库可用于这样的事情?

谢谢。

编辑:我愿意接受不同于上面列出的内容的建议。

回答

2

任何重复的视频流都会降低性能,尤其是在嵌入式领域。在大多数视频的情况下,我认为你最好使用本地硬件加速技术将视频直接播放到屏幕上。通过一些适当的封装,你应该可以在围绕视频的GUI上使用Qt,并且有一个特定于平台的类,用于控制实际的视频到屏幕的绘制(在哪里绘制,以及有多大等等)。 )。

编辑:

您可能也想看看声子库。我没有看太多,但它似乎支持显示可能从各种不同来源获得的视频。

+0

我知道你来自哪里,但本地硬件加速可能完全位于不同的设备上,或者它可能位于同一设备上。现在,它通过USB传送到显示器。如果我们抛弃套接字的想法,这很好,你知道任何LGPL或专有的跨平台库,这将有助于在Qt中完成这样的事情吗? – 2009-09-25 01:57:17

+0

另外,请为您的答案添加一个空格或其他内容,以便我可以+1。它说投票太旧以至于无法改变。 – 2009-09-25 01:58:23

3

你看过QVision?这是一个基于Qt的框架,用于管理视频和视频处理。你不需要处理,但我认为它会做你想做的。

+0

看起来很有趣,谢谢。 – 2009-09-25 15:54:54