2014-01-17 15 views
5

Ich bin auf der Suche nach einer besten Möglichkeit, eine Video-Player-Anwendung in QML zu implementieren. Fast alle QML Beispiele sind das Lesen von Dateien aus Dateisystem oder Web:Eingabe von Videodaten von C++ zu QML Video Player

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

VideoOutput { 
    anchors: parent.fill 
    source: mediaplayer 
} 

Ich möchte meine eigene Quelle für MediaPlayer angeben - eine C++ QObject abgeleitete Klasse, die eine Schnittstelle ähnlich wie QIODevice hat. Das wäre perfekt für meine Bedürfnisse. Ich muss Video in Teilen vorladen und es auch für späteren Gebrauch zwischenspeichern.

Gibt es eine einfache Lösung für meine Bedürfnisse? (Ich verwende Qt 5.2)

Antwort

1

Generell sollten Sie in der Lage sein, jede URL zu überschreiben, die von QML geladen wird. Der Qt-4-docs ist etwas deutlicher darüber als Qt 5:

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

Aber das gleiche sollte für Qt 5 ähnlich sein:

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

z.B. Sie sollten in der Lage sein, ein bestimmtes URL-Schema für eine benutzerdefinierte Quelle magic + videos: // ... für Ihre benutzerdefinierte Quelle zu verwenden.

Worst-Case-Szenario müssen Sie erben (und einige Methoden überschreiben) von QNetworkAccessManager und QNetworkReply (die von QIODevice erbt).

habe ich nicht mit diesem seit qt4 gespielt, aber ich nehme ein guter Ausgangspunkt wäre dies: auf diese Art von Sachen

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

ich ein bisschen veraltet bin, aber hoffentlich hilft dies.