当我使用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
在rtpgstdepay caps中,对于新版本,事件字符串应以"0字节字符(\0)"终止。对于较旧的版本,应以";(分号)'。
如果事件字符串未正确终止,则会出现"事件字符串未0终止"警告消息。
添加此条件是为了解决修复缓冲区重写问题,并确保我们不会读取超过缓冲区末尾的字符串。
兼容性矩阵如下:
- 旧付->旧付:
没有变化,升级后的核心不会在某些格式错误的情况下崩溃输入
- 旧付款->新付款:
新的depay发现;并解析消息。核心变更不会课题
- 新付款->旧付款:
new depay在字符串后面加上额外的0。老戴只是解析并跳过额外的0字节(因为它包含在长度中)。有了新的核心,肯定格式错误的有效载荷没有崩溃。
- 新付款->新付款:
new pay在字符串后添加额外的0,new depay检查0并解码。新core将避免某些缓冲区溢出。
通过使用rtpgstpay&rtpgstdepay组件我通过udp通过rtp成功地传输了修改后的缓冲区。
在接收器端,
在udpsrc caps中,我添加了类型为G_type_string的caps中的caps事件字符串。
caps事件字符串是在我使用-v选项启动此管道时获取的。
该事件字符串用于我的C代码的udpsrc caps属性。