输入从C ++到QML视频播放器的视频数据

时间:2014-01-17 09:52:20

标签: qt qml qmediaplayer qiodevice

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

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

VideoOutput {
    anchors: parent.fill
    source: mediaplayer
}

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

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

1 个答案:

答案 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

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