Я разрабатываю кроссплатформенное SIP-приложение на основе PJSUA2 для ядра и QtQuick для графического интерфейса.
PJSUA2 предоставляет API для отображения устройств захвата пользователя, а также видеопотока удаленной стороны. Такой API предоставляет собственный обработчик окон для данного видео. Встроенный обработчик окон зависит от платформы (HWND в Windows, NSView * на Mac и т. Д.).
Я хотел бы встроить это собственное окно в определенный компонент QML, скажем, Rectangle.
Это возможно?
К вашему сведению: я использую MacOS Sierra 10.12.6, PJSIP 2.7 с бэкэндом SDL и Qt 5.9.2. Но я бы хотел, чтобы это работало как на Windows, так и на MacOS.
Ты не можешь. Вы даже не можете включить QWidget в Qt Quick Item.
Чтобы дать вам что-нибудь пожевать, вы можете взглянуть на https://github.com/vlc-qt/vlc-qt .
Они предлагают QWidgets и QtQuick Items, которые позволяют использовать VLC для воспроизведения видео.
Они используют дескриптор окна (HWND) для виджета (https://github.com/vlc-qt/vlc-qt/blob/master/src/core/MediaPlayer.cpp#L217).
Но для Qt Quick они копируют каждый видеокадр в QSGNode (https://github.com/vlc-qt/vlc-qt/blob/master/src/core/VideoStream.cpp#L111 а также https://github.com/vlc-qt/vlc-qt/blob/master/src/qml/rendering/VideoNode.cpp#L32).
Других решений пока нет …