Я использую Mediastreamer2 для создания нескольких видеопотоков в Qt.
Когда я запускаю видеопоток, mediastreamer2 показывает поток в новом открытом окне.
Мне нужен поток в моем Qt GUI. Любой совет, как решить эту проблему?
video_stream_set_native_window_id(stream,ui->ANYTHING->winId());
Эта строка изменяет windowsID потока, прежде чем я его запускаю. Когда он запущен, окно потока имеет новый идентификатор.
До сих пор я пробовал все в GUI от виджетов до фреймов …
Я думаю, вам будет очень тяжело, когда 3-сторонняя библиотека будет рисовать на виджетах, созданных qt, и не думаю, что вам вообще стоит это пробовать. Даже если вам удастся взломать его, следующий патч qt может снова все уничтожить.
Вы должны попытаться выполнить потоковую передачу в буфер, а не прямо на экран. Я не знаю вашу потоковую библиотеку, но я ожидаю, что это возможно.
Затем найдите наиболее удобный способ преобразования этого буфера в QImage или QPixmap и добавьте его в QLabel. Я ожидаю, что это будет возможно сделать без перемещения каких-либо данных.
Или переопределите метод paint () в QWidget и попытайтесь заставить QPainter нарисовать ваш буфер. Я не знаю, возможно ли это, хотя.
Я очень зол на себя, это так просто.
QWindow *wi = Window::fromWinId(video_stream_get_native_window_id(video));
QWidget *ww = QWidget::createWindowContainer(wi);
Создайте QWindow с windowID из медиастрима и создайте QWidget, используя WindowContainer.