Gstreamer-Interleave 2文件:如何在管道中的一个流上捕获End-Of-Stream?

时间:2015-03-09 14:18:20

标签: gstreamer

我正在交错2个单声道文件以播放立体声输出文件。一个文件比另一个文件短,我想在较短的文件到达流末端(EOS)时捕获EOS。

不幸的是,当我在管道上使用gst_bus_add_watch()时(参见下面的代码),只有当生成的交错流到达文件结尾时,才会使用EOS消息调用my_callback()。就我而言,只有当最长的文件到达EOS时才会发生这种情况:

* loop = g_main_loop_new(NULL,FALSE);

pipeline = gst_pipeline_new("管道");

bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));

gst_bus_add_watch(bus,my_callback,loop);

当此流到达EOS时,有没有办法在2个流中的一个(例如短路流)(来自my_callback())捕获EOS? (gboolean my_bus_callback(GstBus *总线,GstMessage 消息,gpointer数据))

谢谢

1 个答案:

答案 0 :(得分:0)

在interleave元素上实现mode-flag可能更容易。

您现在可以做的是在交错元素的接收器垫上使用垫探针并在那里监听eos事件。你应该能够将它们从公共汽车发布到公共汽车上,但我还没试过。