Gstreamer gst发布可与fakesink一起使用,但不能与autovideosink一起使用

Gstreamer gst发布可与fakesink一起使用,但不能与autovideosink一起使用,gstreamer,Gstreamer,我试图找出如何在GStreamer(1.4.4)中创建一个管道,而不仅仅是非常简单的playbin1。我有一个流被送入GTK+DrawingArea小部件,但它目前正在对其进行字母装箱,而我想尝试扩展视频流以适应整个小部件 为此,我使用了gst-launch-1.0应用程序,但我发现最后的fakesink似乎有效,而autovideosink则无效。这两条管道是(X是IP摄像机的rtspt://URI): 换句话说,唯一的区别是水槽本身。看起来,无论我将接收器放置在何处(即使它只是一个rtsps

我试图找出如何在GStreamer(1.4.4)中创建一个管道,而不仅仅是非常简单的
playbin
1。我有一个流被送入GTK+
DrawingArea
小部件,但它目前正在对其进行字母装箱,而我想尝试扩展视频流以适应整个小部件

为此,我使用了
gst-launch-1.0
应用程序,但我发现最后的
fakesink
似乎有效,而
autovideosink
则无效。这两条管道是(
X
是IP摄像机的
rtspt://
URI):

换句话说,唯一的区别是水槽本身。看起来,无论我将接收器放置在何处(即使它只是一个
rtspsrc location=X!sink
),问题仍然会发生,并且该问题表现为:

rtspsrc gstrtspsrc.c:5074:gst_rtspsrc_loop<rtspsrc0> error: Internal data flow error
rtspsrc gstrtspsrc.c:5074:gst_rtspsrc_loop<rtspsrc0> streaming task paused, reason not-linked (-1)
但是,正如前面所讨论的,我并不真正想要一个
playbin
,因为我想在管道中安装自己的视频定标器

我(尽管有限)的理解是,
rtph264depay
删除不必要的RTSP协议内容,
h264parse
解码H.264数据,
decodebin
自动神奇地选择正确的解码器,
autovideosink
选择正确的接收器来显示流

我不完全确定在管道的第五阶段改变某些东西会如何影响第一阶段的工作


那么,为什么一个假接收器可以工作,而自动选择接收器不能工作呢?

在自动视频接收器工作之前添加videoconvert

gst-launch-1.0 rtspsrc location=X!rtph264depay!h264parse!德克宾!视频转换!自动视频接收器

原因是sink元素不支持解码的格式输出,因此导致错误“流任务已暂停,原因未链接”

假币是不同的。它只是简单地删除数据,不关心格式,因此它不会出现此错误


playbin可以播放,因为它会在需要时自动添加convert元素。

在autovideosink工作之前添加videoconvert

gst-launch-1.0 rtspsrc location=X!rtph264depay!h264parse!德克宾!视频转换!自动视频接收器

原因是sink元素不支持解码的格式输出,因此导致错误“流任务已暂停,原因未链接”

假币是不同的。它只是简单地删除数据,不关心格式,因此它不会出现此错误


playbin可以播放,因为它会在需要时自动添加转换元素。

谢谢你,matilda gl。实际上,我认为
autovideosink
是那些“神奇”的东西之一(比如
playbin
本身),它只是增加了让它工作所需的东西:-),但显然不是。我今天不在办公室,但明天会检查一下,告诉你进展如何。谢谢你,玛蒂尔达。实际上,我认为
autovideosink
是那些“神奇”的东西之一(比如
playbin
本身),它只是增加了让它工作所需的东西:-),但显然不是。我今天不在办公室,但明天会检查一下,告诉你进展如何。
rtspsrc gstrtspsrc.c:5074:gst_rtspsrc_loop<rtspsrc0> error: Internal data flow error
rtspsrc gstrtspsrc.c:5074:gst_rtspsrc_loop<rtspsrc0> streaming task paused, reason not-linked (-1)
gst-play-1.0 X
gst-launch-1.0 playbin uri=X