2014-01-17 4 views
5

Я ищу лучший способ реализовать приложение для видеопроигрывателя в QML. Почти все примеры QML читают файлы из файловой системы или сети:Входные видеоданные от C++ к QML Video Player

MediaPlayer { 
    id: mediaplayer 
    source: "groovy_video.mp4" 
} 

VideoOutput { 
    anchors: parent.fill 
    source: mediaplayer 
} 

Я хочу, чтобы указать свой собственный источник для MediaPlayer - C++ QObject производного класса а, который имеет интерфейс, похожий на QIODevice. Это было бы идеально для моих нужд. Мне нужно предварительно загружать видео по частям, а также кэшировать его для последующего использования.

Есть ли легкое решение для моих нужд? (я использую Qt 5.2)

ответ

1

Вообще говоря, вы должны уметь переопределять любой URL-адрес, загружаемый QML. Qt 4 Docs немного более четко об этом, чем Qt 5:

https://doc.qt.io/qt-4.8/qdeclarativenetwork.html

Но то же должен быть похож на Qt 5:

http://doc.qt.io/qt-5/qqmlnetworkaccessmanagerfactory.html

например вы должны иметь возможность использовать определенную схему URL для настраиваемой исходной магии + видео: // .... для вашего настраиваемого источника.

В худшем случае вам необходимо наследовать (и переопределять некоторые методы) из QNetworkAccessManager и QNetworkReply (который наследуется от QIODevice).

Я не играл с этим, так как Qt4, но я предполагаю, что является хорошей отправной точкой будет это:

http://doc.qt.io/qt-5/qtqml-networkaccessmanagerfactory-example.html

Я немного устарел на такого рода вещи, но, надеюсь, что это помогает.