c++ - 将视频流式传输到多个源或从多个源流式传输视频

标签 c++ gtk robotics vlc v4l2

我想知道你们中的一些人会如何解决这个问题。 我有一个机器人,它正在运行 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/

相关文章:

c++ - 有没有更好的方法可以接收此输入? C++

python - 是否可以生成随机对象变量名称并从 python 方法返回它们?如何?

lisp - 用 lisp 进行机器人编程?

c++ - 在哪里可以找到用于机器人技术的 C/C++ Linux API?

c++ - 当前正在运行哪个单元测试?

c++ - 指针初始化的STL vector

c - 错误: unknown type name ‘GTKWidget’

events - 将双击事件附加到标签

robotics - ROS2和DDS有什么区别?

c++ - 使用指向非静态成员函数的函数指针时,可以省略 "this"关键字吗