我使用 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/