我有一个GStreamer管道,其拓扑结构有时会改变。我们所做的是:
gst_element_set_state(pipeline, GST_STATE_READY);
gst_element_unlink(node1, tee);
gst_element_link(node1, oldfilm);
gst_element_link(oldfilm, tee);
gst_element_set_state(pipeline, GST_STATE_PLAYING);
我们假设在重新连接元素时必须停止管道。问题:我们的应用程序挂起,通常视频在我们更改拓扑后的前几次停止流式传输,然后下一次调用gst_element_set_state(管道,GST_STATE_PLAYING)永远不会返回。该应用程序仍然响应^ C,这当然会杀死它。
我们得出结论,我们没有做到这一点。在应用程序运行时更改管道拓扑的正确方法是什么?
答案 0 :(得分:1)
早在2016年的GStreamer会议上,我听到有关这个主题的讨论,在这方面感觉非常有用。
讲座: https://gstconf.ubicast.tv/videos/how-to-work-dynamic-pipelines/
我希望这能解释如何处理这些类型的问题。