在 rtspsrc 连接上删除 GST_EVENT_EOS

问题描述 投票:0回答:0

我正在用 rust 实现一个 Gstreamer 管道来从不同的相机中获取 rtsp 提要。我使用

hlssink2
元素创建清单来查看/存储视频。

对于某些相机,hlssink2 的 splitmux 元素会收到一个

GST_EVENT_EOS
,这会导致管道停止。

即使我添加

bus.add_watch
并捕获
gst::MessageView::Eos(state_changed)
事件,也会发生这种情况。

有没有办法以编程方式阻止 EOS 消息并保持 rtsp 连接?

我可以在其中一个元素垫上添加一个

add_probe
并让它忽略它吗?像下面这样的东西?但我不确定我应该在哪个元素上做它以及会产生什么影响?

<rtsp element's video pad>.add_probe(gst::PadProbeType::BLOCK_DOWNSTREAM, |_pad, _info| {
                gst::PadProbeReturn::Ok
            }).unwrap();

这是我有一个 Rust 实现的示例管道。

gst-launch-1.0 hlssink2 name=ingest1 playlist-length=5 max-files=0 target-duration=10 \
send-keyframe-requests=true playlist-location=/tmp/manifest.m3u8 location=/tmp/video/%t.ts \
rtspsrc latency=100 location=<rtspurl> protocols=0x00000004 name=basesrc basesrc. ! rtph264depay ! tee name=t \
t.! queue  ! ingest1.video

rust gstreamer gstreamer-rs
© www.soinside.com 2019 - 2024. All rights reserved.