2017-10-27 5 views
1

コアのPJSUA2とGUIのQtQuickに基づいたクロスプラットフォームSIPアプリケーションを開発しています。QMLコンポーネントにネイティブウィンドウを埋め込む方法は?

PJSUA2は、ユーザーのキャプチャデバイスとリモートパーティビデオストリームを表示するためのAPIを提供します。このようなAPIは、特定のビデオのネイティブウィンドウハンドラを公開します。ネイティブウィンドウハンドラはプラットフォーム固有です(WindowsではHWND、MacではNSView *など)。

このネイティブウィンドウを特定のQMLコンポーネントに埋め込みたいと思っています。

これは可能ですか?

FYI:MacOS Sierra 10.12.6、PJSIP 2.7とSDLバックエンド、Qt 5.9.2を使用しています。しかし、私はWindowsとMacOSの両方で動作させたいと思っています。

答えて

2

できません。 QWidget内にQWidgetを含めることさえできません。

おしゃぶりをするには、https://github.com/vlc-qt/vlc-qtをご覧ください。

これらは、ビデオを再生するためにVLCを使用できるようにするQWidgetsとQtQuick項目を提供します。

ウィジェットのウィンドウハンドル(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)にコピーします。

関連する問題