我想在我的应用程序中使用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'调用,但遗憾的是,情况并非如此)