gstreamer + framebuffer и вывод его на QWidget

257
12 августа 2017, 03:52

Вот сколько уже пытаюсь вытащить видео с камеры на QWidget, пробовал QMultimedia (1-2 fps), пробовал на прямую в QPixmap через gstreamer + appsink, 2-3 fps... Много всего в общем)) железо не мощное. Теперь пробую так:

1) запихиваю с помощью gstreamer и fbdevsink видео во framebuffer (/dev/fb1)

2) получаю оттуда изображение и вывожу его на widget.

С первым пунктом проблем нет... Чем можно выполнить второй пункт? Вроде как QScreen но ума не хватает с ним разобраться. Еще слышал про directFB - но что это за зверь такой? и как его вообще использовать на QT?

P.S. Если просто выводить видео через gstreamer без привязки к виджету, оно летает! загрузка процессора ~3%

Answer 1

Можно попробовать воспользоваться QGraphicView + QOpenGLWidget. Когда-то давно пробовал использовать для написания тестовой игры. На сцену(scene) добавляются графические элементы. Тогда всё это плавно работало.

CGraphicsView *view = new CGraphicsView(); 
CGraphicsScene *scene = new CGraphicsScene();
view->setScene(scene);
view->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
view->setViewport(new QOpenGLWidget());
view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
READ ALSO
C++: интерфейс без наследования

C++: интерфейс без наследования

Предположим, у меня есть абстрактный класс ("интерфейс") I1 и конкретный тип T:

286
Разделение потока на порции данных

Разделение потока на порции данных

Все то, что функция send() посылает на хост, может разделиться на несколько отдельных порций данных, на прочтение каждой из которых нужен отдельный...

190
Имена библиотек gcc

Имена библиотек gcc

Из литературы по С++ известны наименования библиотек (например, math)В линуксовском компиляторе gcc (а возможно и в g++) эта библиотека называется...

293
Приведение double к float в C++

Приведение double к float в C++

Пусть переменная типа double приводится к переменной типа floatЕсли переменная double хранит значение NaN, то оно преобразуется в NaN

345