我想知道你们中的一些人会如何解决这个问题。 我有一个机器人,它正在运行 linux 并使用网络摄像头(带有 v4l2 驱动程序)作为其传感器之一。我用 gtkmm 写了一个控制面板。服务器和客户端都是用 C++ 编写的。服务器是机器人,客户端是“控制面板”。图像分析在机器人上进行,我想将视频从摄像机传回控制面板,原因有二: A)为了好玩 b) 叠加图像分析结果
所以我的问题是,有什么好的方法可以将视频从网络摄像头传输到控制面板,并优先让机器人代码处理它?我对编写自己的视频压缩方案并将其通过现有的网络端口不感兴趣,我认为最好是一个新的网络端口(专用于视频数据)。问题的第二部分是如何在 gtkmm 中显示视频?视频数据异步到达,我无法控制 gtkmm 中的 main(),所以我认为这会很棘手。
我愿意使用 vlc、gstreamer 或任何其他我不知道的通用压缩库。
谢谢!
编辑: 该机器人有一个 1GHz 处理器,运行类似 Linux 版本的桌面,但没有 X11。
最佳答案
Gstreamer 几乎可以为您解决所有这些问题,只需很少的努力,并且还可以很好地与 Glib 事件系统集成。 GStreamer 包括 V4L 源插件、gtk+ 输出小部件、用于调整视频大小/编码/解码视频的各种过滤器,以及最重要的是,用于在机器之间移动数据的网络接收器和源。
对于原型(prototype),您可以使用“gst-launch”工具组装视频管道并对其进行测试,然后在您的代码中以编程方式创建管道就相当简单了。搜索“GStreamer network streaming”以查看人们使用网络摄像头等进行此操作的示例。
关于c++ - 将视频流式传输到多个源或从多个源流式传输视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2061558/