2

我正在开发一个跨平台的 SIP 应用程序,它基于 PJSUA2 的核心和 QtQuick 的 GUI。

PJSUA2 提供了一个 API 用于显示用户的捕获设备以及远程方的视频流。这样的 API 公开了给定视频的本机窗口处理程序。本机窗口处理程序是特定于平台的(Windows 上的 HWND、Mac 上的 NSView* 等)。

我想把这个原生窗口嵌入到一个特定的 QML 组件中,比如说一个 Rectangle。

那可能吗?

仅供参考:我正在使用带有 SDL 后端和 Qt 5.9.2 的 MacOS Sierra 10.12.6、PJSIP 2.7。但我想让它同时在 Windows 和 MacOS 上运行。

4

1 回答 1

2

你不能。您甚至不能在 Qt Quick Item 中包含 QWidget。

为了给你一些东西,你可以看看https://github.com/vlc-qt/vlc-qt

他们提供允许使用 VLC 播放视频的 QWidgets 和 QtQuick Items。

他们为小部件使用窗口句柄 (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#L111https://github.com /vlc-qt/vlc-qt/blob/master/src/qml/rendering/VideoNode.cpp#L32)。

于 2017-10-27T17:52:27.673 回答