即使发送EOS,Appsrc也会停留在预卷中

时间:2018-01-03 08:31:28

标签: gstreamer gstreamer-1.0

应用程序有一个管道:

appsrc is-live=true ! audiorate skip-to-first=true tolerance=250000000 ! opusenc ! oggmux ! filesink

调用gst_element_send_event(appsrc, gst_event_new_eos())来终止它。但是EOS有时候没有到达管道的总线。

当它没有通过时,必须提供EOS的循环的callstack反而停留在等待预卷:

g_cond_wait () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
gst_base_sink_wait_preroll () at gstbasesink.c:2212
gst_base_sink_do_preroll () at gstbasesink.c:2306
gst_base_sink_do_sync () at gstbasesink.c:2508
gst_base_sink_chain_unlocked () at gstbasesink.c:3495
gst_base_sink_chain_main () at gstbasesink.c:3656
gst_pad_chain_data_unchecked () at gstpad.c:4188
gst_pad_push_data () at gstpad.c:4440
in gst_pad_push () at gstpad.c:4559
in gst_proxy_pad_chain_default () at gstghostpad.c:126
in gst_pad_chain_data_unchecked () at gstpad.c:4188
gst_pad_push_data () at gstpad.c:4440
in gst_pad_push () at gstpad.c:4559
in gst_base_src_loop () at gstbasesrc.c:2850
in gst_task_func () at gsttask.c:332
in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
in start_thread () at pthread_create.c:333
in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

应用程序没有数据可以放入appsrc,因为它是清理过程的一部分。

GStreamer 1.8.3。

如何取消预卷并在巴士上获得适当的EOS,以便一切都可以关闭?

0 个答案:

没有答案