繁体   English   中英

如何在Qt5中使代理与QMediaPlayer一起使用?

[英]How to make a proxy working with QMediaPlayer in Qt5?

我在Qt上的项目有一个小问题。 我正在尝试像这样直接使用QMediaPlayer播放网络广播:

QMediaPlayer player;
player.setMedia(QUrl("http://listen.42fm.ru:8000/stealkill"));
player.play();

它可以正常工作,但我的另一个限制是设置SSH隧道(部署网络上的端口8000被阻止)。 因此,我在设备上设置了端口转发,并按如下方式配置了Qt代理:

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

代理可用于我的应用程序执行的每个HTTP请求,但似乎不适用于QMediaPlayer(当我输入废话代理主机名时,我的HTTP请求不再起作用,但QMediaPlayer仍然有效...)。

关于使用QMediaPlayer正确设置此设置的任何想法吗?

在此先感谢您的帮助!

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

有一个简短的摘要:

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();

希望这对您有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM