2014-01-17 82 views
5

我正在尋找一種在QML中實現視頻播放器應用程序的最佳方法。幾乎所有的QML例子是從文件系統或Web讀取文件:將視頻數據從C++輸入到QML視頻播放器

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

VideoOutput { 
    anchors: parent.fill 
    source: mediaplayer 
} 

我想自己指定源MediaPlayer - 一個C++ QObject派生類,具有類似於QIODevice的接口。這對我的需求來說是完美的。我需要預先加載部分視頻,並將其緩存以備後用。

有沒有簡單的解決方案來滿足我的需求? (我正在使用Qt 5.2)

回答

1

一般而言,您應該能夠覆蓋任何由QML加載的URL。 Qt的4文檔是關於這個比的Qt 5更明確一點:

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

但同樣應該Qt的5類似於:

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

例如您應該可以使用特定的url架構來創建自定義來源magic + videos:// ....以獲取您的自定義來源。

最糟糕的情況下,您必須從QNetworkAccessManager和QNetworkReply(繼承自QIODevice)繼承(並覆蓋一些方法)。

我還沒有玩過這個,因爲QT4但我相信一個良好的起點將是這樣:

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

我對這種東西有點過時,但希望這有助於。