2016-06-16 85 views
0

我嘗試寫媒體流緩衝,然後到文件QT QNetworkReply下載流媒體

buf.open(QBuffer::ReadWrite); 
    file.setFileName("out.mp3"); 
    file.open(QIODevice::WriteOnly|QFile::Truncate); 
    mp3file.setDevice(&file); 

嘗試:

1. 
void MainWindow::reply_readyRead() 
{ 
    QByteArray qa; 
    qa = reply->read(16 * 1024); 
    buf.write(qa.data(),qa.size()); 
} 

2. 
    void MainWindow::reply_readyRead() 
    { 
    QByteArray qa; 
    qa = reply->read(16 * 1024); 
    buf.write(qa.data(),qa.size()); 
    mp3file.writeRawData(qa.data() ,qa.size()); 
    } 

總是出文件/緩衝器被打破(遺漏的部分) 。你可以在這裏聽這個文件MP3 FILE

從靜態文件(從URL)寫mp3進行順利!

回答

0

您不讀取所有可用的數據。無論是讀取所有數據一次:

QByteArray qa = reply->readAll(); 

,或者嘗試在一個循環做:

QByteArray qa; 
while (reply->bytesAvailable() > 0) 
    qa += reply->read(16 * 1024);