gpt4 book ai didi

qt - 如何从 QT 中的 RTSP 流解析 ONVIF 元数据?

转载 作者:行者123 更新时间:2023-12-05 04:16:06 25 4
gpt4 key购买 nike

首先,我使用 QMediaPlayer 构建了一些示例,但它无法处理 RTSP 流(ubuntu 14.04 上的 GStreamer 0.10 存在问题)。

其他一些想法没有用,所以我转向其他解决方案。

我已经基于 LibVLC 和 vlc-qt DemoPlayer 示例(QT 5.4.1)构建了一个 qt 播放器。

流媒体运作良好,视频非常棒。

我想从 IP 摄像机的 RTSP 流中解析 ONVIF 元数据流(它发送一些包含对象移动等信息的简单 xml 数据),并根据从流中收集的元数据绘制一些线条。

我在寻找获取该数据的正确位置时遇到了一些麻烦。

据我所知,LibVLC 会忽略它无法解析的流部分。

有没有人试过做类似的事情并为我指明正确的方向,或者我走错了路,有更好的解决方案吗?:)

最佳答案

有了 gst-launch,您可以简单地使用这个管道:

gst-launch-1.0 rtspsrc location=camera_uri ! application/x-rtp, media=application ! fakesink dump=true

您将在终端中获得相机元数据。但是这个数据会有rtp包头。要删除它,您必须编写 depayloader 元素。 (我没有找到任何),只删除 rtp header 。

depayloader处理方法示例:

static GstBuffer *
gst_rtp_xml_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
{
guint8 *payload;
GstRTPBuffer rtp = { NULL };
GstRtpXMLDepay *rtpxmldepay;
rtpxmldepay = GST_RTP_XML_DEPAY (depayload);
gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
payload = (guint8*)gst_rtp_buffer_get_payload_buffer (&rtp);
return (GstBuffer*)payload;
}

如果您想在应用中获取元数据,可以使用 appsink。

关于qt - 如何从 QT 中的 RTSP 流解析 ONVIF 元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29230656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com