2017-03-11 61 views
0

如何使用Qt FrameWork從vimeo或dailymotion下載視頻。這裏是我的代碼,但它不工作:Qt FrameWork - 從vimeo,dailymotion下載視頻

downloadManager = new QNetworkAccessManager(this); 
QNetworkRequest request; 
request.setUrl(QUrl("https://www.dailymotion.com/cdn/H264-1280x720/video/x5e553p.mp4?auth=1489424955-2562-4nmhj8lt-a840543181f17a50d614a6ff23ad5c07")); 

QSslConfiguration configSsl = QSslConfiguration::defaultConfiguration();  
configSsl.setProtocol(QSsl::AnyProtocol); 
request.setSslConfiguration(configSsl); 
replyn = downloadManager->get(request); 

此網址https://www.dailymotion.com/cdn/H264-1280x720/video/x5e553p.mp4?auth=1489424955-2562-4nmhj8lt-a840543181f17a50d614a6ff23ad5c07重定向到https://proxy-058.dc3.dailymotion.com/video/793/580/326085397_mp4_h264_aac_hd.mp4?auth=1489259396-6658-s68i24c0-6b97977318a7dbd81ef264afc469ffa1#cell=core&hls_heuristic=1&hls_startFragPrefetch=1

回答

1

QNetworkAccessManager不處理HTTP重定向。你將不得不通過發送一個新的QNetworkRequest來處理它。

新的URL應該在HTTP Location標頭中。要得到它,你可以使用QNetworkReply::header(QNetworkRequest::LocationHeader)

QUrl newUrl = replyn->header(QNetworkRequest::LocationHeader).toUrl(); 
QNetworkRequest request; 
request.setUrl(newUrl); 
... 

請注意,我用QVariant::toUrl()到的QVariant轉換爲一個QUrl,但你可能需要將轉換的QVariant到QString的,然後到QUrl。

+0

你可以舉一些例子代碼 –

+0

你嘗試過什麼嗎?這只是使用新URL調用「downloadManager-> get()」的問題。 –

+0

是的,但我無法在QT中獲得新的URL –