案例
连续读取文件并提供给appsrc元素。
来源 - appsrc
我在播放状态下有一个GStreamer管道。当我按下一个意味着应该清除appsrc队列的按钮时,现在希望管道刷新/清理。播放应从现在添加到/或在刷新后添加的缓冲区开始。
问题
我使用的API返回false。我无法冲洗。
fprintf(stderr, "The flush event start was <%d>",gst_element_send_event(GST_ELEMENT (pipe), gst_event_new_flush_start());
fprintf(stderr, "The flush event stop was <%d>",gst_element_send_event(GST_ELEMENT (pipe), gst_event_new_flush_stop()));
以上两者都返回0.这意味着错误。 这是错误的原因是什么?
如何使用某些API尝试刷新管道中的数据?或者是否有其他用于跳过播放的API?
尝试
gst_event_new_flush_start ()
和gst_event_new_flush_stop ()
发送到管道,有或没有几毫秒的间隙gst_event_new_seek (1.0, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_SET, 0);
所有这些都行不通。
答案 0 :(得分:1)
这对我不起作用,因为我使用的是 0.10 v的gstreamer。如果没有使用0.10版gstreamer
的约束,请使用 1.2 < / strong> gstreamer的版本。
然而,在第0.10节中,冲洗寻求通常用作冲洗管道的替代品。
使用1.2v时,两个API gst_event_new_flush_start ()
和gst_event_new_flush_stop ()
可以正常工作。在这种情况下,您可以直接使用冲洗。
无论哪种方式,你都应该能够冲洗。创建一个内部API,用于执行刷新搜索并将其用作刷新API。
gstreamer-devel mailing list中有一篇帖子谈到了flush在两个版本中的行为。