如何将默认解码器设置为playbin2?

时间:2012-05-28 09:41:07

标签: c++ gstreamer

我正在尝试接收视频流,现在是mjpeg流。为了使节目独立于广播协议和视频流格式,我使用的是playbin2。它可以工作,但是playbin连接到流需要花费很多时间。我想这个问题是解码器,因为当我测试时:

gst-launch-0.10 soupthhpsrc location=http://some_location timeout 5 ! jpegdec ! autoaudiosink

它工作得很好。连接需要1秒钟。 所以问题是:有没有办法将jpegdec设置为我的playbin的默认解码器?

1 个答案:

答案 0 :(得分:1)

我认为不可能将mjpeg解码器指定为playbin2的默认值。这对我来说听起来很合理,因为playbin2应该自动检测有效的流的格式。在未知格式的情况下,playbin2必须报告错误(see code examples)。我认为您需要正确设置mjpeg流,以便使用playbin2正确检测它。

然而,为了实现您的想法,您可以使用以下技巧:

首先,您应该尝试运行一般的playbin2管道,能够解码和播放不同类型的流。如果它有效,那么别无他法。否则,您需要运行替代管道,该管道仅解码mjpeg。

如何制作替代管道,只解码mjpeg?您可以尝试使用playbin2(不确定它是否可行)。为此,您必须在信号处理程序gst_pad_set_caps中明确指定大写字母(使用source-setup)作为“image / jpeg”。否则,有必要选择另一个管道,例如,您在问题中指定的管道。