我想在我的应用中使用Video
/ MediaPlayer
QML元素,并让它播放自定义流中的视频。 QMediaPlayer
似乎支持这一点,因为您可以告诉它从QIODevice
读取,它可以执行您想要的任何操作。但MediaPlayer
仅支持网址。
有什么办法可以注册我自己使用自己的流媒体协议的URL方案吗?例如,假设我想制作rtsp2://...
,我可以做一些模糊的事情:
class Rtsp2 : public QIODevice
{
// open, read, seek, close, etc.
}
QCoreApplication::registerUrlProtocol("rtsp2", Rtsp2);
答案 0 :(得分:2)
我没有看过细节,但QML引擎有一个用于连接的QNetworkAccessManager。您可以通过继承和挂钩createRequest在QNAM层添加自己的协议。但是我怀疑QMediaPlayer可能不会使用此QNAM进行媒体加载,因为底层媒体层通常提供自己的IO抽象。
(此外,向QNAM添加自定义协议并非完全无关紧要 - 理想情况下,这将是一个简单的'registerProtocolFor'调用,但遗憾的是情况并非如此)