GStreamer: appsrc & multifilesink - 滞后输出



我使用通过appsrc将数据馈送到GStreamer并通过multifilesink输出。这很好。然而,如果有太多的数据(例如,因为分辨率太高),输出开始延迟。事实上,时间越长,multifilesink输出的文件就越隐蔽。

例如,如果我让这个过程持续一段时间,multifilesink可能会输出一分钟前的帧,即使它开始时有一个非常小的延迟。

我如何告诉GStreamer丢弃帧以避免达到如此大的延迟?

指出:

  • 我的appsrc有is-livedo-timestamp设置。
  • 我已经尝试添加max-latencyblock(false)到appsrc,但这似乎没有改变任何东西。
  • 我也试过在我的multifilesink上设置max-lateness,但这似乎也没有做任何事情。

(PS:我的代码可以在这里找到,在回答关于这种类型的设置的另一个问题。)

最后通过在我的capsfilter之前在我的管道中添加一个泄漏的queue来解决这个问题。在我的例子中:

GstElement* queue = gst_element_factory_make("queue", NULL);
g_object_set(G_OBJECT(queue), "leaky", 2, NULL);
g_object_set(G_OBJECT(queue), "max-size-time", 500 * GST_MSECOND, NULL);

成功了

最新更新