从描述

时间:2016-05-30 21:02:09

标签: gstreamer qtgstreamer

我正在使用Qt GStreamer包装器并尝试按如下方式创建管道:

QGst::ElementPtr bin = 
    QGst::Bin::fromDescription("videotestsrc ! videoscale 
    ! video/x-raw,width=100,height=100");

然而,当我运行它时,我收到错误:

GStreamer-CRITICAL **: gst_bin_add: assertion 'GST_IS_ELEMENT (element)' failed
terminate called after throwing an instance of 'QGlib::Error'
what():  no element "video"

我认为"/"存在一些问题,但不确定如何修复它。

gstreamer管道:

gst-launch-1.0 -v  videotestsrc ! videoscale ! video/x-raw,width=100,height=100 
! xvimagesink -e --gst-debug-level=3 sync=false

工作正常。

我尝试通过转义引号,如:

QGst::ElementPtr bin = 
    QGst::Bin::fromDescription(\""videotestsrc ! videoscale 
    ! video/x-raw,width=100,height=100\"");

但这给出了:

terminate called after throwing an instance of 'QGlib::Error'
what():  specified empty bin "bin", not allowed

1 个答案:

答案 0 :(得分:1)

在GStreamer中,这是大写(元素功能)的语法:

  

视频/ X-原料,宽度= 100,高度= 100

解析器希望它在两个元素之间,以确定它们应该如何连接。它本身不是一个元素。如果您想要解析管道,可以在最后添加identity。这将产生原始的100x100视频帧,一些未确定的色彩空间。

正如您可能已经意识到的那样,在您将接收器连接到它之前,该管道将不会执行任何操作。