QMediaPlayer从自签名的Flask https服务器流数据

我的问题很简单:如何从自签名的https服务器制作QMediaPlayer播放媒体?

我正在使用flask运行Python媒体服务器,该服务器仍在构建中。为了提供https,我使用的是自签名SSL证书。因此,我必须先在客户端准备QNetworkQuery对象,然后再通过QNetworkAccessManager将其发送出去。这样可以避免验证错误:

QSslConfiguration ssl_conf = QSslConfiguration::defaultConfiguration();
ssl_conf.setPeerVerifyMode(QSslSocket::VerifyNone);
QNetworkRequest request;
request.setUrl(url);
request.setSslConfiguration(ssl_conf);

现在,当我流式传输媒体文件时(通过send_file(storage_path,conditional=True)从我的flask服务器提供媒体文件时),我遇到了问题。天真的,我尝试根据我的ReST API端点设置QMediaContent网址:

QMediaPlayer* player;
player->setMedia(QMediaContent(QUrl("https://0.0.0.0:5000/api/sounds/<uuid>")));
player->play();

我的输出记录不足为奇:

Error: "Secure connection setup failed."

这是因为缺少上述请求准备。然后,我注意到QMediaContent还提供了一个使用QNetworkRequest的构造函数。因此,我将上面的两个片段合并为:

QNetworkRequest req;
QSslConfiguration conf = QSslConfiguration::defaultConfiguration();
conf.setPeerVerifyMode(QSslSocket::VerifyNone);
req.setUrl(QUrl("https://0.0.0.0:5000/api/sounds/<uuid>"));
req.setSslConfiguration(conf);
player_->setMedia(QMediaContent(req));

不幸的是,错误仍然存​​在。我有种感觉,内部QMediaPlayer功能设置了自己的SSL验证级别。至少看来我用尽了配置选项。是否可以在上述情况下禁用SSL验证?

注意:如果我的服务器运行纯http,我能够验证是否可以按预期播放媒体。

xuanxixuan 回答:QMediaPlayer从自签名的Flask https服务器流数据

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3163664.html

大家都在问