我在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正确设置这个的想法?
提前感谢您的帮助!
发布于 2017-01-19 20:43:48
您可以尝试使用QNetworkAccessManager机制创建带有proxy的请求,并将QNetworkReply设置为QMediaPlayer::setMedia(const QMediaContent & media,QIODevice * stream = Q_NULLPTR)中的第二个参数。查看更多信息here。
这里有一小段代码:
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();希望这能对你有所帮助。
https://stackoverflow.com/questions/35322132
复制相似问题