2017-10-27 2 views
1

Ich entwickle eine plattformübergreifende SIP-Anwendung basierend auf PJSUA2 für den Kern und QtQuick für die GUI.Wie bette ich ein natives Fenster in die QML-Komponente ein?

PJSUA2 bietet eine API für die Anzeige der Capture-Geräte des Benutzers sowie des Remote-Party-Videostreams. Eine solche API macht einen nativen Fensterhandler für ein bestimmtes Video verfügbar. Der native Fensterhandler ist plattformspezifisch (HWND unter Windows, NSView * auf Mac usw.).

Ich möchte dieses native Fenster in eine bestimmte QML-Komponente einbetten, sagen wir ein Rectangle.

Ist das möglich?

FYI: Ich benutze MacOS Sierra 10.12.6, PJSIP 2.7 mit SDL-Backend und Qt 5.9.2. Aber ich möchte, dass es sowohl unter Windows als auch unter MacOS funktioniert.

Antwort

2

Sie können nicht. Sie können nicht einmal ein QWidget in ein Qt Quick Item einfügen.

Um Ihnen etwas zu kauen, können Sie einen Blick auf https://github.com/vlc-qt/vlc-qt werfen.

Sie bieten QWidgets und QtQuick Items, mit denen VLC zum Abspielen von Videos verwendet werden kann.

Sie verwenden ein Fensterhandle (HWND) für das Widget (https://github.com/vlc-qt/vlc-qt/blob/master/src/core/MediaPlayer.cpp#L217).

Aber für Qt Quick kopieren sie jeden Videoframe in einen QSGNode (https://github.com/vlc-qt/vlc-qt/blob/master/src/core/VideoStream.cpp#L111 und https://github.com/vlc-qt/vlc-qt/blob/master/src/qml/rendering/VideoNode.cpp#L32).

Verwandte Themen