5

我正在寻找在 QML 中实现视频播放器应用程序的最佳方法。几乎所有 QML 示例都是从文件系统或 Web 读取文件:

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

VideoOutput {
    anchors: parent.fill
    source: mediaplayer
}

我想为MediaPlayer- 一个 C++QObject派生类指定我自己的源,它的接口类似于QIODevice. 这对我的需求来说是完美的。我需要部分预加载视频并缓存以供以后使用。

有满足我需求的简单解决方案吗?(我使用的是 Qt 5.2)

4

1 回答 1

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

我对这种东西有点过时了,但希望这会有所帮助。

于 2014-11-02T16:34:58.800 回答