qt QNetworkReply从网络电台下载媒体流

时间:2016-06-16 01:00:59

标签: qt qt5 qtnetwork

我尝试将媒体流写入缓冲区然后再写入文件

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

总是out-file / buffer被破坏(错过的部分)。你可以在这里听这个文件MP3 FILE

从静态文件(来自url)编写mp3顺利进行!

1 个答案:

答案 0 :(得分:0)

您没有阅读所有可用的数据。要么一次读取所有数据:

public final void addManually(File file) {
        try{
            MediaStore.Images.Media.insertImage(mContext.getContentResolver(),
                    file.getAbsolutePath(), file.getName(), null);
            mContext.sendBroadcast(new Intent(
                    Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
                    Uri.fromFile(file))
            );
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

或尝试循环播放:

QByteArray qa = reply->readAll();