带有QML视频的视频在Mac OS X上播放不稳定

时间:2011-06-07 08:38:31

标签: macos video qml

我正在尝试使用QML创建简单的视频播放器。我安装了QtSdk并从源代码编译和安装QtMobility。然后我将这个简单的视频播放代码放到主qml文件中:

import QtQuick 1.0
import QtMultimediaKit 1.1

Item{
    width: 400; height: 300
    Video {
        id: video
        source: "d:/Projects/Serenity - HD DVD Trailer.mp4"
        anchors.fill: parent
        MouseArea {
            anchors.fill: parent
            onClicked: {
                video.play()
            }
        }
    }
}

编译并运行应用程序后,视频播放不稳定,在退出应用程序时,它会将其放入日志中:

2011-06-07 11:13:44.055 video-player[323:903] *** __NSAutoreleaseNoPool(): Object 0x10225ea60 of class NSCFNumber autoreleased with no pool in place - just leaking
2011-06-07 11:13:45.007 video-player[323:903] *** __NSAutoreleaseNoPool(): Object 0x10264f030 of class __NSCFDate autoreleased with no pool in place - just leaking
2011-06-07 11:13:45.007 video-player[323:903] *** __NSAutoreleaseNoPool(): Object 0x11a409000 of class NSCFTimer autoreleased with no pool in place - just leaking
2011-06-07 11:13:45.008 video-player[323:903] *** __NSAutoreleaseNoPool(): Object 0x11a43e550 of class NSCFArray autoreleased with no pool in place - just leaking
2011-06-07 11:13:45.008 video-player[323:903] *** __NSAutoreleaseNoPool(): Object 0x11a462560 of class __NSFastEnumerationEnumerator autoreleased with no pool in place - just leaking

如果有任何方法可以让它顺利播放并防止记忆?

1 个答案:

答案 0 :(得分:1)

解决。我已经使用OpenGL了。比Windows not-GL版本更好用。这是一个代码:

QDeclarativeView mainwindow;
mainwindow.setSource(QUrl::fromLocalFile("./qml/app.qml"));
QGLFormat format = QGLFormat(QGL::DirectRendering); // you can play with other rendering formats like DoubleBuffer or SimpleBuffer
format.setSampleBuffers(false);
QGLWidget *glWidget = new QGLWidget(format);
glWidget->setAutoFillBackground(false);
mainwindow.setViewport(glWidget);

注意:当前的QtMobility版本(1.1)有一个错误,不允许在Windows上以OpenGL渲染模式播放视频。所以我使用原生Qt渲染获胜。