2015-11-11 2 views
0

Я использую Mediastreamer2 для создания нескольких видеопотоков в Qt. Когда я запускаю видеопоток, mediastreamer2 показывает поток в новом открывшемся окне. Мне нужен поток в моем графическом интерфейсе Qt. Любой совет, как это решить?Mediastreamer2 Videostream outputwindow в Qt GUI

video_stream_set_native_window_id(stream,ui->ANYTHING->winId());

Эта строка изменяет windowsID потока, бувигер я начинаю его. Когда он запущен, окно потока имеет новый идентификатор. До сих пор я пробовал все в графическом интерфейсе от виджетов до фреймов ...

ответ

0

Я думаю, что у вас будет очень трудное время, когда вы получите 3party lib на виджеты, созданные qt, и не думайте, что вам стоит попробовать это вообще. Даже если вам удастся его взломать, следующий патч qt может снова уничтожить все.

Вам следует попытаться передать поток в буфер вместо прямого доступа к экрану. Я не знаю вашу библиотеку потоков, но я ожидаю, что это возможно.

Затем найдите наиболее эффективный способ преобразования этого буфера в QImage или QPixmap и добавьте его в QLabel. Я ожидал бы, что это можно будет сделать без перемещения каких-либо данных. Альтернативно, переопределите метод paint() QWidget и попробуйте заставить QPainter нарисовать ваш буфер. Я не знаю, возможно ли это.

0

Я очень злюсь на себя, это так просто.

QWindow *wi = Window::fromWinId(video_stream_get_native_window_id(video)); QWidget *ww = QWidget::createWindowContainer(wi);

Создать QWindow с WindowID из MediaStream и создать QWidget с помощью WindowContainer.