Tim*_*mmm 9 url qt qml qt-quick qiodevice
我想在我的应用程序中使用Video
/ MediaPlayer
QML元素,并让它从自定义流中播放视频.QMediaPlayer
似乎支持这个,因为你可以告诉它从QIODevice
哪个可以做任何你想做的事情.但MediaPlayer
只支持URL.
有什么办法可以注册我自己使用自己的流媒体协议的URL方案吗?例如,说我想做rtsp2://...
,我可以做一些模糊的事情:
class Rtsp2 : public QIODevice
{
// open, read, seek, close, etc.
}
QCoreApplication::registerUrlProtocol("rtsp2", Rtsp2);
Run Code Online (Sandbox Code Playgroud)
我没有查看详细信息,但 QML 引擎有一个用于连接的 QNetworkAccessManager。您可以通过子类化和挂钩 createRequest 在 QNAM 层添加您自己的协议。但是我怀疑 QMediaPlayer 可能不会使用此 QNAM 进行媒体加载,因为底层媒体层通常提供自己的 IO 抽象。
(此外,向 QNAM 添加自定义协议并不简单 - 理想情况下,这将是一个简单的“registerProtocolFor”调用,但遗憾的是事实并非如此)