动态更改 gstreamer 管道上的 udpsrc

Dynamically change udpsrc on gstreamer pipeline

参考http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-dynamic-pipelines.html,我尝试更改gstreamer 管道上的udpsrc。 但是出了点问题,更改 udp 源后管道状态无法更改为 PLAYING。

以下是修改udpsrc的顺序。 原始管道箱包括...

udpsrc - 队列 - tsdemux - 队列 - 解析器 - 视频解码器 - 队列视频接收器

  1. 首先,屏蔽udpsrc的src pad
  2. 将 eos 事件发送到队列(在 udpsrc 旁边)
  3. 等到从总线收到eos消息。
  4. 将 udpsrc 的状态设置为 NULL,并从管道 bin 中删除 udpsrc。(unlink)
  5. 使用新的源 uri 创建新的 udpsrc。
  6. link 排队
  7. 将状态更改为“正在播放”。

这个顺序有错吗? 提前致谢。

在这种情况下,您不需要通过管道发送 EOS。这具有发出流结束信号的效果,虽然在大多数情况下可以从中恢复,但在这种情况下不需要。

动态更改管道时通过元素发送 EOS 的场景适用于同时具有 sink 和 src pad 的元素,以便排出可能卡在其中的任何数据。