如何检测漏斗插件的一个来源已在 gstreamer 管道中结束?

How to detect one source of funnel plugin has ended in gstreamer pipeline?

我正在使用 gstreamer 构建具有两个源的管道。一个是文件源(filesrc),另一个是appsrc。当 filesrc 得到 EOS 时,管道不会退出。 appsrc 仍会收到 need-data 信号,并且永远不会自行停止。似乎 funnel 插件将等待所有源结束,然后再将 EOS 发送到管道。有没有办法在 filesrc 文件结束时得到通知?

gst 启动命令如下所示:

gst-launch-1.0 funnel name=f \
appsrc name=appsrc-h264-sei do-timestamp=true block=true is-live=true ! video/x-h264, stream-format=byte-stream, alignment=au ! queue ! f. \
filesrc input.h264 ! queue ! f. \
f. ! queue ! h264parse ! video/x-h264, stream-format=byte-stream, alignment=au ! mp4mux ! filesink location=file.mp4

您可以在漏斗输入面板安装一个 GstPadProbe 并在回调中检查 EOS 事件。