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



我想在我的应用程序中使用Video/MediaPlayer QML元素,并让它从自定义流中播放视频。QMediaPlayer似乎支持这一点,因为你可以告诉它从可以做任何你想做的QIODevice读取。但是MediaPlayer只支持URL。

是否有任何方法我可以注册我自己的URL方案,使用我自己的流协议?例如,假设我想创建rtsp2://...,我可以做一些模糊的:

class Rtsp2 : public QIODevice
{
    // open, read, seek, close, etc.
}
QCoreApplication::registerUrlProtocol("rtsp2", Rtsp2);

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

(另外,添加自定义协议到QNAM并不是微不足道的-理想情况下,它将是一个简单的'registerProtocolFor'调用,但遗憾的是,情况并非如此)

最新更新