2015-11-24 25 views
0

当我使用rtpgstdepay depay负载,我收到警告消息作为消息传输不是0终止

事件串不为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 
+0

你能请张贴正是你所得到的警告消息(复制粘贴 - 围绕着一个或许有些行) – nayana

+0

警告信息“事件字符串不是0终止” 调试信息:: gstrtpgstdepay.c(331):read_event() :/ GstPipeline:Transporter/GstRtpGSTDepay:rtp_depay –

回答

0

在新版本中,rtpgstdepay caps事件字符串应该以'0字节字符(\ 0)'结尾。对于旧版本,它应该以';(Semicolon)'结尾。

如果事件字符串未正确终止,则会出现'事件字符串不是0终止'的警告消息。

这个条件被添加来克服修复缓冲区重读问题,并确保我们不会读取超过缓冲区末尾的字符串。

兼容性矩阵是这样的:

  • 老付 - >老depay:

没有变化,升级核心不会对某些畸形 输入崩溃。

  • 老付 - >新depay:

新depay认定;最后解析消息。核心变更不是 的事。

  • 新的薪酬 - >老depay:

新depay串后把多余的0。旧的depay只是解析并跳过 多余的0字节(因为它包含在长度中)。使用新核心,某些 格式错误的有效载荷不会崩溃。

  • 新的薪酬 - >新depay:

新的薪酬增加了额外的0串后,新depay检查0和解码。新的 核心将避免某些缓冲区溢出。

+0

那么究竟如何解决这个问题呢?您使用了哪些付款/付款元素? – nayana

0

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

在接收机端,

在udpsrc帽,i的上限是类型G_TYPE_STRING的加入上限事件串。

当我使用-v选项启动此管道时,会提取caps事件字符串。

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