qt QNetworkReply 从互联网广播下载媒体流

Posted

技术标签:

【中文标题】qt QNetworkReply 从互联网广播下载媒体流【英文标题】:qt QNetworkReply download Media Stream from internet radio 【发布时间】:2016-06-16 01:00:59 【问题描述】:

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

   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 顺利!

【问题讨论】:

【参考方案1】:

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

QByteArray qa = reply->readAll();

或尝试循环执行:

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

【讨论】:

以上是关于qt QNetworkReply 从互联网广播下载媒体流的主要内容,如果未能解决你的问题,请参考以下文章

连接丢失时未检测到 QNetworkReply 错误信号

Qt - 从网络下载图像

Qt Jambi:访问 QNetworkReply 的内容

Qt 使用 QNetworkReply 获取外部 IP 地址

连续上传导致 QNetworkReply 错误“无法分配内存”

Qt QNetworkReply readAll 在再次请求相同的 url 时返回空