gstreamer - 如何检测一个漏斗插件来源已在 gstreamer 管道中结束?
问题描述
我正在使用 gstreamer 构建具有两个源的管道。一个是文件源 ( filesrc
),另一个是appsrc
. 当 filesrc 获得 EOS 时,管道不会退出。appsrc
仍然会收到need-data
信号,并且永远不会自行停止。在将 EOS 发送到管道之前,插件似乎funnel
会等待所有来源结束。当 filesrc 到达文件末尾时,有没有办法得到通知?
gst-launch 命令如下所示:
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 事件。