自定义URL协议处理程序Qt 5

时间:2012-12-24 20:38:43

标签: qt url qml qt-quick qiodevice

我想在我的应用中使用Video / MediaPlayer QML元素,并让它播放自定义流中的视频。 QMediaPlayer似乎支持这一点,因为您可以告诉它从QIODevice读取,它可以执行您想要的任何操作。但MediaPlayer仅支持网址。

有什么办法可以注册我自己使用自己的流媒体协议的URL方案吗?例如,假设我想制作rtsp2://...,我可以做一些模糊的事情:

class Rtsp2 : public QIODevice
{
    // open, read, seek, close, etc.
}

QCoreApplication::registerUrlProtocol("rtsp2", Rtsp2);

1 个答案:

答案 0 :(得分:2)

我没有看过细节,但QML引擎有一个用于连接的QNetworkAccessManager。您可以通过继承和挂钩createRequest在QNAM层添加自己的协议。但是我怀疑QMediaPlayer可能不会使用此QNAM进行媒体加载,因为底层媒体层通常提供自己的IO抽象。

(此外,向QNAM添加自定义协议并非完全无关紧要 - 理想情况下,这将是一个简单的'registerProtocolFor'调用,但遗憾的是情况并非如此)