Проблема с созданием конвейера 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 видеокадрам с неопределенным цветовым пространством.
И, как вы, вероятно, знаете, этот конвейер ничего не сделает, пока вы не подключите к нему раковину.