【问题标题】:using a proxy when playing a stream with QMediaPlayer in Qt5? [duplicate]在 Qt5 中使用 QMediaPlayer 播放流时使用代理? [复制]
【发布时间】:2019-07-22 09:11:23
【问题描述】:

我想在代理服务器后面使用 QMediaPlayer 在 QT5 上播放 webradio 流。

我尝试使用以下解决方案:

How to make a proxy working with QMediaPlayer in Qt5?

但是 QNetworkReply 不是从 QIODevice 派生的,因此它不会编译。

我已阅读文档,搜索了很多但没有找到解决方案。

编辑:添加一个最小的可重现示例:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkProxy proxy;
manager->setProxy(proxy);

QNetworkReply *reply = manager -> get(QNetworkRequest( QUrl()));
QMediaPlayer *player = new QMediaPlayer();
player->setMedia(QMediaContent(), reply);

编译器说:

参数 2 从“QNetworkReply*”到未知的转换 ‘QIODevice*’

编辑:

在我发现的 QNetworkReply 的 QT 资源中:

class QNetworkReplyPrivate; 
class Q_NETWORK_EXPORT QNetworkReply: public QIODevice

但是为什么向上转换到 QIODevice 不起作用?如果我尝试进行强制转换,编译器会说:

错误:不能将“reply”(类型为“class QNetworkReply*”)动态转换为 type ‘class QIODevice*’ (source 是一个指向不完整类型的指针)

【问题讨论】:

  • QNetworkReply 确实继承自 QIODevice。
  • 编译器说“没有已知的参数 2 从 'QNetworkReply*' 到 'QIODevice*' 的转换”并参考:void setMedia(const QMediaContent &media, QIODevice *stream = Q_NULLPTR);
  • 对不起,作为评论看起来真的很糟糕。我已经编辑了我的问题,再见。
  • QNetworkReply:#include <QNetworkReply>是否加入了?
  • 感谢 eyllanesc,这就是我的问题的解决方案!

标签: c++ qt5 qmediaplayer


【解决方案1】:

感谢您的帮助!

我“只”忘记了包含 QNetworkReply。有了这个,它对我有用

#include <QNetworkAccessManager>
#include <QNetworkProxy>
#include <QNetworkReply>

数小时的故障排除和解决方案是如此简单:)

【讨论】:

    猜你喜欢
    • 2015-08-11
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2021-07-09
    • 1970-01-01
    • 2014-08-14
    相关资源
    最近更新 更多