消息通过rtpgstdepay事件字符串传输而不是0终止

时间:2015-11-24 08:53:37

标签: gstreamer

当我使用rtpgstdepay偿还负载时,我收到警告消息

  

事件字符串不是0终止。

如何解决此问题?

pipeline : gst-launch-1.0 udpsrc ! queue ! rtpgstdepay ! autovideosink 


Warning :: "event string not 0 terminated"
Debug Info ::  gstrtpgstdepay.c(331): read_event (): /GstPipeline:Transporter/GstRtpGSTDepay:rtp_depay

2 个答案:

答案 0 :(得分:0)

在rtpgstdepay上,对于新版本,事件字符串应以'0字节字符(\ 0)'终止。对于旧版本,它应以';(分号)'终止。

如果事件字符串未正确终止,则会出现'event string not 0-terminated'警告消息。

添加此条件是为了克服修复缓冲区重写问题,并确保我们不会读取超出缓冲区末尾的字符串。

兼容性矩阵如下:

  • 旧薪水 - >老德:

没有变化,升级后的核心不会因某些格式错误而崩溃 输入

  • 旧薪水 - >新减:

新的发现;最后并解析消息。核心变化没有 物质

  • 新工资 - >老德:

新的depay在字符串之后添加额外的0。旧的depay只是解析并跳过了 额外的0字节(因为它包含在长度中)。有新核心,肯定 格式错误的有效负载不会崩溃。

  • 新工资 - >新减:

新支付在字符串后添加额外的0,新的depay检查0并解码。新 核心将避免某些缓冲区重读。

答案 1 :(得分:0)

使用rtpgstpay& rtpgstdepay组件我通过rtp上的udp成功传输了修改后的缓冲区。

在Receiver结束时,

在udpsrc上限中,我在大写字母中添加了大写字母字符串,其类型为G_TYPE_STRING。

使用-v选项启动此管道时将获取caps事件字符串。

该事件字符串用于我的C代码的udpsrc caps属性。