由于QML中的主线程阻塞错误,无法启动视频表面

时间:2013-07-06 22:37:09

标签: qt ubuntu qml webcam qt5

我为网络摄像头显示编写了一个示例QML-qt5应用程序,给出了错误: 操作系统:UBUNTU 13.04 Qt Creator 2.7.1基于Qt 5.0.2(64位)

Failed to start video surface due to main thread blocked. 
Failed to start video surface 
CameraBin error: "Internal data flow error."

PS:此错误随机发生,大部分时间都是如此;比如20次说18-19次

以下是代码:

import QtQuick 2.0
import QtMultimedia 5.0

Item {
width: 320
height: 240

VideoOutput {
    id:camOutput
    source: camera
    anchors.fill: parent
    focus : visible // to receive focus and capture key events when visible

}

Camera {
    id: camera

    imageProcessing.whiteBalanceMode: CameraImageProcessing.WhiteBalanceFlash

    exposure {
        exposureCompensation: -1.0
        exposureMode: Camera.ExposurePortrait
    }

    flash.mode: Camera.FlashRedEyeReduction

    imageCapture {
        onImageCaptured: {
            photoPreview.source = preview  // Show the preview in an Image
        }
    }

}
Image {
    id: photoPreview
}
}

1 个答案:

答案 0 :(得分:1)

这是Qt中的一个错误 - 请参阅QTBUG-39567

撰写这篇文章(2017年6月)时,没有实际的解决方案,但建议采取解决方法:

启动应用程序时不要立即播放视频 - 在启动视频播放器之前等待一秒钟。

我测试了这个,它解决了我播放视频的问题。

在您的情况下,这不是视频播放器,但在我看来,这与所有QtMultimedia组件相关。