首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UDP上的RTP扩展头

UDP上的RTP扩展头
EN

Stack Overflow用户
提问于 2021-05-19 12:34:02
回答 1查看 390关注 0票数 1

我试图使用gstreamer在UDP上发送带有特定元数据的图像。发送方处理从摄像机中获取图像,并将它们以appsrc ! rtpvrawpay ! udpsink的形式发送到管道中(下面是完整的管道字符串,以防它很重要)。在接收者方面,我使用udpsrc ! rtpvrawdepay ! appsink

为了增加元数据,我在rtpvrawpay的源Pad上放置了一个探针,并在rtpvrawdepay的Sink Pad上读取了探针。到目前为止我遇到的问题是:

  1. “源”探测器接收GST_PAD_PROBE_TYPE_BUFFER_LIST数据,而“接收器”探针- GST_PAD_PROBE_TYPE_BUFFER。我希望我在UDP的两边都会得到相同的数据类型,那么为什么不是呢?
  2. ,我无法读取发送方添加的twobytes_header,当试图在探测中的缓冲区gst_rtp_buffer_map时,它已经失败了。UPDATE:成功读取接收端的标头,请参阅下面的代码。仍然想了解为什么我在两个探测位置上看到缓冲区列表和缓冲区。

将欣赏任何见解,或可能是一个更好的方向,以发送元数据与图像的UDP。

发送者管道:appsrc ! videoconvert ! queue ! rtpvrawpay name=ToRTP ! queue ! udpsink host=192.168.42.49 port=5566 sync=false async=false

接收者管线:udpsrc port=5566 caps="application/x-rtp, media=(string)video, sampling=(string)BGR, clock-rate=(int)90000, depth=(string)8, width=(string)640, height=(string)480, encoding-name=(string)RAW" ! rtpvrawdepay name=FromRTP ! queue ! videoconvert ! appsink

UPDATE:为我工作的代码:

发件人代码:

代码语言:javascript
运行
复制
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);

收信人代码:

代码语言:javascript
运行
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-20 17:31:52

“源”探测器接收GST_PAD_PROBE_TYPE_BUFFER_LIST数据,而“接收器”探针- GST_PAD_PROBE_TYPE_BUFFER。我希望在UDP的两边都能得到相同的数据类型,那么为什么不是呢?

在发送方上,这取决于通过RTP付费加载器的数据类型:适合于付费加载器的MTU配置的小数据包(例如音频或小视频帧)将触发GST_PAD_PROBE_TYPE_BUFFER探针,而超过MTU的数据包将被拆分为分组列表并触发GST_PAD_PROBE_TYPE_BUFFER_LIST探针。

在接收器上,您在RTP解装载器的接收器盘上的探针总是接收来自UDP源的单个数据包,在这种情况下,GST_PAD_PROBE_TYPE_BUFFER是适用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67603364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档