Appsrc застревает в preroll даже при отправке EOS

Приложение имеет конвейер:

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, вместо этого застревает в ожидании предварительной проверки:

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 ответов

Другие вопросы по тегам