首页 > 解决方案 > 相机使 QQmlApplicationEngine 加载很慢

问题描述

我有一个 QML 前端(Ubuntu 18.04 上的 Qt 5.12)和一个 QML 相机元素(QtMultimedia 5.12)来显示来自 USB 相机/视频采集器的视频直播流。该应用程序在没有相机元素的情况下工作得很好。但是,当添加相机时,加载 QQmlApplicationEngine 需要几分钟(在非常强大的工作站上大约需要 5 分钟)。应用程序启动后,一切正常。

我实现了非常基本的示例,并搜索了类似的问题,但我找不到任何东西。我检查了 GStreamer 版本,它是 1.0。

无论我尝试 QML 还是 QtWidget 版本,Camera 示例都存在同样的问题。

这就是我在我的 QML 文件中所做的:

VideoOutput {
    source: camera
    anchors.fill: parent

    Camera {
        id: camera
    }
}

为了暂时解决这个问题,我尝试添加一个加载器(ApplicationWindow->StackLayout->...->Loader)。我希望除了视频流之外的所有元素都可以立即使用。但是,这只是显示没有任何内容的 ApplicationWindow,我仍然需要等到 Camera 加载完毕。

Loader {
    id: loader 
    asynchronous: true
    anchors.fill: parent

    sourceComponent: Item {
        anchors.fill: parent
        Camera {
            id: camera
        }

        VideoOutput {
            source: camera
            anchors.fill: parent
        }
    }
}

我真的很想知道为什么这里没有按预期工作。

标签: c++qtqmlqtmultimedia

解决方案


推荐阅读