我希望得到一些想法,一个人如何你们中的一些会解决这个问题。 我有一个机器人,运行Linux和使用网络摄像头(带V4L2驱动)作为它的传感器之一。我已经写了与gtkmm的控制面板。无论是服务器和客户端是用C ++编写。服务器是机器人,客户端是“控制面板”。图像分析是发生在机器人上,我想流回从相机到控制面板的视频,原因有二: A)为了好玩 B)叠加图像分析结果

所以我的问题是,有什么好的方法来流从摄像头到控制面板的视频,以及对机器人代码优先处理它?我不感兴趣就写我自己的视频压缩方案,并把它通过现有的网络端口,一个新的网络端口(专用于视频数据)将是最好的,我认为。问题的第二部分是怎么做的我在gtkmm的显示视频?视频数据异步到达,我不具备的gtkmm超过主)控制(所以我认为这将是棘手的。

我愿意使用像VLC,GStreamer的或任何其他一般的压缩库,我不知道。

谢谢!

编辑: 该机器人拥有1GHz的处理器,运行桌面喜欢的Linux版本,但没有X11。

有帮助吗?

解决方案

的Gstreamer解决了几乎所有的这对你来说,用很少的努力,同时还与油嘴事件系统很好地集成。的GStreamer包括V4L源插件,GTK +输出窗口小部件,各种过滤器,以调整大小/编码/解码视频,以及所有最好,网络接收器和源的在机器之间移动数据。

有关的原型,你可以使用“GST推出”工具组装视频流水线进行测试和验证,那么它是相当简单到在你的代码编程方式创建管道。搜索“GStreamer的网络流”,看看人们有摄像头和这样的例子等。

其他提示

我不知道实际使用的技术,但是这可能最终成为一个巨大的同步*****如果你想避免丢帧。我是在同一时间分流到一个文件和网络视频。一个写和两个读:我最终落得这样做使用大循环缓冲区与三分了。有三个控制线(和一些额外的编码线程):一个写作,如果它达到不能同时按别人的读取缓冲区的点会暂停缓冲,和两个读线程会从缓冲区中读取和写入文件/网络(和暂停,如果他们之前得到的制片人)。因为一切都被写入和读出帧,同步开销可以被保持在最低限度。

我的制片人(从另一个文件源)转码器,但在你的情况,你可能希望相机产生的任何格式它一般不会只有做转码(与类似的ffmpeg)服务器整体框架,当机器人处理图像。

您的问题是一个比较复杂,不过,因为机器人需要实时反馈,因此不能暂停,等待流媒体服务器,迎头赶上。所以,你可能想帧控制系统尽可能快地和分别为流媒体的“控制面板”中的循环缓冲区缓存有的可达。某些编解码器手柄丢帧比别人好,所以如果网络让你后面可以开始在缓冲区末尾覆盖帧(照顾他们没有被读取)。

当你说“的新视频端口”,然后开始谈论VLC / gstreaming我发现很难制定出你想要的东西。显然,这些软件包将帮助流媒体,并通过多种协议的压缩,但显然你需要一个“网络端口”不是一个“视频端口”来发送数据流。

如果你真正的意思是通过无线发送视频显示输出/电视饲料是另一回事,但是你需要在从硬件专家而不是软件专家的意见。

移动上。我已经做了充足的流通过MMS / UDP协议和VLC处理得很好(如服务器和客户端)。但是它的设计适用于台式机,也有可能,你想要的轻量化。喜欢上了拱手的GStreamer,MEncoder的ffmpeg的或东西将是更好的,我认为。没有机器人有什么样的CPU?你需要有点咕噜的,如果你打算实时压缩。

在客户端我想你会发现一些小部件的GTK处理视频。我会看看到该担心接口的细节之前。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top