首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Qt5中使代理与QMediaPlayer协同工作?

如何在Qt5中使代理与QMediaPlayer协同工作?
EN

Stack Overflow用户
提问于 2016-02-11 01:37:00
回答 1查看 433关注 0票数 0

我在Qt上的项目有点小问题。我正在尝试使用QMediaPlayer直接播放网络广播,如下所示:

代码语言:javascript
复制
QMediaPlayer player;
player.setMedia(QUrl("http://listen.42fm.ru:8000/stealkill"));
player.play();

它可以工作,但我的另一个限制是设置SSH隧道(端口8000在部署的网络上被阻止)。所以我在我的设备上设置了我的端口转发,我像这样配置了Qt代理:

代码语言:javascript
复制
QNetworkProxy proxy;
proxy.setType(QNetworkProxy::Socks5Proxy);
proxy.setHostName("localhost");
proxy.setPort(1234);
QNetworkProxy::setApplicationProxy(proxy);

代理对我的应用程序所做的每个HTTP请求都有效,但它似乎不能与QMediaPlayer一起工作(当我输入一个胡扯的代理主机名时,我的HTTP请求不再有效,但QMediaPlayer仍然有效...)。

有没有关于用QMediaPlayer正确设置这个的想法?

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2017-01-19 20:43:48

您可以尝试使用QNetworkAccessManager机制创建带有proxy的请求,并将QNetworkReply设置为QMediaPlayer::setMedia(const QMediaContent & media,QIODevice * stream = Q_NULLPTR)中的第二个参数。查看更多信息here

这里有一小段代码:

代码语言:javascript
复制
QNetworkAccessManager * manager = new QNetworkAccessManager(this);

QNetworkProxy proxy;
proxy.setType(QNetworkProxy::Socks5Proxy);
proxy.setHostName("localhost");
proxy.setPort(1234);

manager -> setProxy(proxy);

QNetworkReply * reply = manager -> get(
  QNetworkRequest(
    QUrl("http://listen.42fm.ru:8000/stealkill")
  )
);

QMediaPlayer * player = new QMediaPlayer();
player -> setMedia(QMediaContent(), reply);
player.play();

希望这能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35322132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档