我正在寻找在QML中实现视频播放器应用程序的最佳方法。几乎所有QML示例都是从文件系统或Web中读取文件:
MediaPlayer {
id: mediaplayer
source: "groovy_video.mp4"
}
VideoOutput {
anchors: parent.fill
source: mediaplayer
}
我想为MediaPlayer
指定我自己的源代码 - 一个C ++ QObject
派生类,其类似于QIODevice
的接口。这对我的需求来说是完美的。我需要预先加载部分视频,并将其缓存以供以后使用。
是否有满足我需求的简单解决方案? (我使用的是Qt 5.2)
答案 0 :(得分: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
e.g。您应该能够使用特定的网址架构来获取自定义源魔术+视频:// ....作为您的自定义源。
最糟糕的情况是,您必须从QNetworkAccessManager和QNetworkReply(继承自QIODevice)继承(并覆盖某些方法)。
自qt4以来我没有玩过这个,但我认为一个好的起点就是:
http://doc.qt.io/qt-5/qtqml-networkaccessmanagerfactory-example.html
我对这种东西有点过时,但希望这会有所帮助。