har*_*ums 5 c gstreamer gstreamer-1.0 nvidia-deepstream
我有一个使用 RTSP 输入流的工作 Gstreamer 管道。为了处理这些给定的 RTSP 输入流,使用了 uridecobin 元素。
我的目标是当互联网连接不稳定时重新连接到 RTSP 输入流。当互联网连接仅断开几秒钟然后又恢复时,管道再次开始接收帧,一切正常。当互联网连接中断超过 20 秒时,我会收到 GST_MESSAGE_EOS。我试图在 uridecodebin 生成的每个元素中找到一些超时变量,但没有找到。您是否有任何提示哪个元素具有此超时变量以及如何设置它?
如果无法设置这样的超时变量,有没有办法阻止GST_MESSAGE_EOS?因为当我在总线中收到 GST_MESSAGE_EOS 时,我尝试从管道中删除 uridecodebin 并创建一个新管道。但当收到 GST_MESSAGE_EOS 时,它对我不起作用(当我尝试从管道中删除 uridecodebin 并在正常状态下创建一个新管道时,它起作用)。
我找到了阻止 GST_MESSAGE_EOS 的方法。
创建以下函数来删除 GST_EVENT_EOS:
GstPadProbeReturn eos_probe_cb(GstPad *pad, GstPadProbeInfo *info, gpointer u_data)
{
if (GST_EVENT_TYPE(GST_PAD_PROBE_INFO_DATA(info)) == GST_EVENT_EOS)
{
return GST_PAD_PROBE_DROP;
}
return GST_PAD_PROBE_OK;
}
Run Code Online (Sandbox Code Playgroud)
然后将此函数添加到元素的某些 GstPad 中:
gst_pad_add_probe(src_pad, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM, eos_probe_cb, (gpointer) user_data, NULL);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1963 次 |
| 最近记录: |