Gstreamer UDP上的RTP扩展头
我正在尝试使用gstreamer通过UDP发送具有特定元数据的图像。发送方进程从摄像机抓取图像,并以Gstreamer UDP上的RTP扩展头,gstreamer,rtp,Gstreamer,Rtp,我正在尝试使用gstreamer通过UDP发送具有特定元数据的图像。发送方进程从摄像机抓取图像,并以appsrc!的形式在管道中发送它们!rtpvrawpay!udpsink(下面的完整管道字符串,以防它很重要)。在接收器端,我使用udpsrc!rtpvrawdepay!appsink 为了添加元数据,我在rtpvrawpay的源板上放置了一个探测器,并在rtpvrawdepay的接收器板上读取-probe。到目前为止,我遇到的问题是: “源”探测器接收GST\u PAD\u probe\u T
appsrc!的形式在管道中发送它们!rtpvrawpay!udpsink
(下面的完整管道字符串,以防它很重要)。在接收器端,我使用udpsrc!rtpvrawdepay!appsink
为了添加元数据,我在rtpvrawpay
的源板上放置了一个探测器,并在rtpvrawdepay
的接收器板上读取-probe。到目前为止,我遇到的问题是:
GST\u PAD\u probe\u TYPE\u BUFFER\u LIST
数据,“接收器”探测器-GST\u PAD\u probe\u TYPE\u BUFFER
。我希望在UDP的两侧都能得到相同的数据类型,为什么不呢twobytes\u头
,尝试gst\u rtp\u buffer\u map
探测中的缓冲区时,它已经失败更新:成功读取接收器端的标题,请参阅下面的代码。仍然想理解为什么我在两个探测位置上看到缓冲区列表和缓冲区appsrc!视频转换!队列rtpvrawpay name=ToRTP!队列udpsink主机=192.168.42.49端口=5566同步=假异步=假
接收器管道:udpsrc port=5566 caps=“应用程序/x-rtp,媒体=(字符串)视频,采样=(字符串)BGR,时钟速率=(int)90000,深度=(字符串)8,宽度=(字符串)640,高度=(字符串)480,编码名称=(字符串)原始”!rtpvrawdepay name=FromRTP!队列视频转换!appsink
更新:为我工作的代码:
发件人代码:
GstRTPBuffer rtp_buf = GST_RTP_BUFFER_INIT;
gst_rtp_buffer_map(*buffer, GST_MAP_READWRITE, &rtp_buf);
gst_rtp_buffer_add_extension_twobytes_header(&rtp_buf, 1, 1, myInfo->buf, sizeof(myInfo->buf));
gst_rtp_buffer_unmap(&rtp_buf);
接收器代码:
GstRTPBuffer rtp_buf = GST_RTP_BUFFER_INIT;
GstBuffer* buf = GST_PAD_PROBE_INFO_BUFFER(info);
gst_rtp_buffer_map(buf, GST_MAP_READ, &rtp_buf);
gpointer myInfoBuf = nullptr;
guint size = 0;
gst_rtp_buffer_get_extension_twobytes_header(&rtp_buf, &appbits, 1, 0, &myInfoBuf, &size);
gst_rtp_buffer_unmap(&rtp_buf);