c++ - Qt+Opencv中导入Gstreamer视频

标签 c++ qt opencv gstreamer

我使用 gstreamer 通过无线网络流式传输我的网络摄像头 我使用 Arm 板在我的电脑上进行流式传输和接收。 想把qt收到的视频导入opencv使用。

使用此命令流式传输视频:

./capture -c 10000 -o | gst-launch-0.10 -v -e filesrc location=/dev/fd/0 ! h264解析! rtph264支付! tcpserversink 主机=127.0.0.1 端口=8080

和接收:

gst-launch udpsrc port=1234 ! “应用程序/x-rtp,有效负载=127”! rtph264depay ! ffdec_h264 ! xvimagesink sync=false

在qt中使用接收到的视频我应该怎么做。 我想用于图像处理。

最佳答案

您需要编写自己的接收应用程序,而不是使用 gst-launch。为此,请参阅 gstreamer.freedesktop.org 上的文档。特别是应用开发手册http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.html

要在 Qt 窗口内使用视频,您可以使用 GstXOverlay/GstVideoOverlay 接口(interface)告诉 xvimagesink 在哪里绘制视频(窗口 ID)。

gstreamer 中有一个 opencv 插件,它包装了一些来自 opencv 的函数/过滤器。如果您感兴趣的功能未实现,您可以将其包装在一个新的 gstreamer 元素中以供使用。或者您可以编写缓冲区探测器来修改应用程序中的缓冲区,然后自己调用 opencv 进行处理。

从您的 gst-launch 行我可以看出您使用的是 0.10 版。如果可能,您应该考虑迁移到 1.x 版本,因为 0.10 已过时且无人维护。如果您必须坚持使用 0.10,请在查找文档时注意确保您正在阅读适合您的版本的正确文档。

关于c++ - Qt+Opencv中导入Gstreamer视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21888159/

相关文章:

qt - Qml 计时器未在正确的时间间隔内触发

c++ - 如何调试 QTableView 的内部工作?

python - 使用 OpenCL 从灰度图像中过滤全白像素

c++ - 继承自 boost::asio::ip::tcp::socket 的自定义套接字

c++ - Perl CGI 与 mod_perl WebServer 中的 C CGI

c++ - Microsoft C++ 异常:std::bad_alloc。是什么原因造成的?

c++ - OpenCV 使用 Eclipse 和 CDT

c++ - ifstream.open()在Eclipse CDT中设置failbit?

qt - 如何在 Qt 中为无框窗口添加阴影

java - 提取特征HOG描述符