Gstreamer 为什么v4l2src错误消息不能通过包含队列元素的管道传播?

Gstreamer 为什么v4l2src错误消息不能通过包含队列元素的管道传播?,gstreamer,gstreamer-1.0,usb-camera,Gstreamer,Gstreamer 1.0,Usb Camera,我正在尝试构建一个gstreamer管道,从h264 USB摄像头获取视频流,并对其进行处理(在屏幕上显示,将其记录到文件中,等等)。如果管道中发生错误,我想打印出来并终止管道。例如: 如果USB摄像头被拔下,管道应该终止,并且应该会打印出一条错误消息 根据需要使用以下简单管道: gst-launch-1.0 v4l2src device=/dev/video2 ! decodebin ! autovideosink 管道显示视频,当我拔下摄像头时,管道终止并打印以下输出: v4l2src0

我正在尝试构建一个gstreamer管道,从h264 USB摄像头获取视频流,并对其进行处理(在屏幕上显示,将其记录到文件中,等等)。如果管道中发生错误,我想打印出来并终止管道。例如: 如果USB摄像头被拔下,管道应该终止,并且应该会打印出一条错误消息

根据需要使用以下简单管道:

gst-launch-1.0 v4l2src device=/dev/video2 ! decodebin !  autovideosink
管道显示视频,当我拔下摄像头时,管道终止并打印以下输出:

v4l2src0: 
Error: gst-resource-error-quark: Could not read from resource. (9)
Debug: gstv4l2bufferpool.c(1040): gst_v4l2_buffer_pool_poll (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
poll error 1: Resource temporarily unavailable (11)
当我构建一个更复杂的管道(适合我的需要)时,我发现错误消息没有通过管道传播,因此它没有终止管道。我把它缩小到“麻烦制造者”元素,结果是队列元素

以下管道不再按预期工作:

gst-launch-1.0 v4l2src device=/dev/video2 ! queue ! decodebin !  autovideosink
当摄像机被拔下时,视频显示会无限期冻结,而不会终止管道

这是正常的行为吗?我错过了什么?有解决办法吗

注:我试图用标识元素及其属性后的错误模拟错误消息

gst-launch-1.0 v4l2src device=/dev/video2 ! identity error-after=60 ! queue ! decodebin !  autovideosink
此管道也可以按需要工作,这意味着它将被终止,并显示相关的错误消息