【发布时间】:2026-01-29 22:50:01
【问题描述】:
我的管道在中间分裂,通过不可靠的连接发送。如果我不考虑它们,这会导致一些缓冲区出现位错误,这些错误会破坏管道。为了解决这个问题,我有一个appsink,它解析缓冲区的关键信息(时间戳、持续时间、数据和数据大小),将它们序列化,然后使用 CRC 通过不可靠的通道发送。如果接收流水线从不可靠通道读取缓冲区并使用 CRC 检测到位错误,则删除该缓冲区。除了一些临时的视觉伪影之外,大多数解码器都能够从丢弃的缓冲区中恢复正常。
是否有自动执行此操作的 GStreamer 插件?我研究了 GDPPay 和 GDPDepay 插件,它们似乎满足了我的需求,因为它们的缓冲区序列化并包含 CRC 的标头和有效负载,但是插件假设数据是通过可靠的通道发送的(为什么这个假设和包含 CRC,我不知道)。
我很想花时间制作插件/向 GDP 插件发出拉取请求,这些插件只会丢弃坏缓冲区,而不是使用 GST_FLOW_ERROR 暂停管道。
任何建议将不胜感激。理想情况下,它也可以容忍管道崩溃/重启。 (该插件还希望 Caps 过滤器信息是第一个发送的缓冲区,在我的情况下,我不需要发送,因为我有一个固定的目的,并且可以硬编码两端以知道会发生什么。这只是一个问题如果receiver重启,sender已经在发送数据,但是receiver不会收到数据,因为它正在等待sender已经发送的Caps数据。)
【问题讨论】:
标签: gstreamer crc gstreamer-1.0