Видео с QML Видео воспроизводится с перебоями в Mac OS X - PullRequest
1 голос
/ 07 июня 2011

Я пытаюсь создать простой видеоплеер с 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 Ответ

1 голос
/ 22 июня 2011

решаемая. Я использовал OpenGL для этого. Работает даже лучше, чем Windows не-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) есть ошибка, которая не позволяет воспроизводить видео в режиме рендеринга OpenGL в Windows. Поэтому я использовал нативный рендеринг Qt для победы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...