Проблема с созданием конвейера 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 ответ

Решение

В GStreamer это синтаксис для заглавных букв (возможности элемента):

видео / х-сырец, ширина =100, высота = 100

Анализатор ожидает, что он будет между двумя элементами, чтобы определить, как они должны объединиться. Это не сам элемент. Если вы хотите, чтобы конвейер анализировал, вы можете добавить identity в конце. Это приведет к необработанным 100x100 видеокадрам с неопределенным цветовым пространством.

И, как вы, вероятно, знаете, этот конвейер ничего не сделает, пока вы не подключите к нему раковину.

Другие вопросы по тегам