实现IP摄像头

时间:2009-09-24 19:59:04

标签: qt sockets ip-camera live-video

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

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

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

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

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

你怎么建议我处理这个?是否有可用于此类事物的跨平台库?

谢谢。

编辑:我愿意接受不同的建议,而不是上面列出的建议。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

任何复制视频流的内容都会让您失去性能,特别是在嵌入式空间中。在视频的大多数情况下,我认为你最好尝试使用本地硬件加速将视频直接渲染到屏幕上。通过一些适当的封装,你应该能够使用Qt作为视频周围的GUI,并且有一个特定于平台的类,用于控制实际的视频绘制到屏幕(绘制的位置,大小等)。 )。

修改

您可能还想查看Phonon库。我没有多看,但它似乎支持显示可能从一系列不同来源获取的视频。