@dobrenkiy

Как вывести видео с GStreamer на QWidget?

Здравствуйте.
Есть рабочий проект на Qt, QWidgets. Необходимо вывести изображение с потока GStreamer'a на виджет.
Настройка делается следующим образом:
gst_init(nullptr, nullptr);
//source, sink, pipeline, описанные ниже - GstElement* 
source = gst_element_factory_make("nvarguscamerasrc", "source");
sink = hst_element_factory_make("nv3dsink", "sink");
pipeline = gst_pipeline_new("pipeline");

gst_bin_add_many(GST_BIN(pipeline), source, sink, NULL);
gst_element_link(source, sink);

gst_element_set_state(pipeline, GST_STATE_READY);

//tmpwgt - QWidget*
gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(sink), tmpwgt->winId());

gst_element_set_state(pipeline, GST_STATE_PLAYING);'


Если я создаю независимый tmpwgt, который не является нчиьим дочерним объектом, то на него выводится видео.
Если накидать тестовую программку с виджетом для вывода и парой кнопок, то все будет нормально отрабатываться.
Если закомментить строчку gst_element_set_state(pipeline, GST_STATE_PLAYING); , то отрабатывает как нужно, отображает в запущенное gstreamer'ом окно.
Если я его делаю дочерним от какого-либо объекта, не важно какой вложенности в Ui программы (добавлял в layout mainWindow) на него ничего не выводится.
Если мониторить сообщения, которые формирует GStreamer. ошибок никаких нет. Судя по ним, он запускается нормально, они одинаковые (по крайней мере коды и статусы перехода состояний)
Что делать, куда смотреть уже не знаю, может есть какие идеи?

P. S. Вопрос решён. Не давало вывести наличие флага Qt::WA_TranslucentBackground.
  • Вопрос задан
  • 813 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы