psy*_*hed 5 qt qml qiodevice qmediaplayer
我正在寻找一种在QML中实现视频播放器应用程序的最佳方法.几乎所有QML示例都是从文件系统或Web读取文件:
MediaPlayer {
id: mediaplayer
source: "groovy_video.mp4"
}
VideoOutput {
anchors: parent.fill
source: mediaplayer
}
Run Code Online (Sandbox Code Playgroud)
我想指定我自己的源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/qmlnetworkaccessmanagerfactory.html
例如,您应该能够为自定义源使用特定的 url 架构 magic+videos://.... 为您的自定义源。
最坏的情况是您必须从 QNetworkAccessManager 和 QNetworkReply(从 QIODevice 继承)继承(并重写某些方法)。
自 qt4 以来我就没有玩过这个,但我认为一个好的起点是:
http://doc.qt.io/qt-5/qtqml-networkaccessmanagerfactory-example.html
我对这类东西有点过时了,但希望这会有所帮助。