簡體   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