繁体   English   中英

如何在Qt中播放QByteArray的声音

[英]how to play a voice from QByteArray in Qt

我想播放来自QByteArray的音乐,所以我可以在很多情况下使用它来从数据库中检索声音或使用Tcp等通过网络传输它。
所以我使用这些代码行

QFile file("E:\\amr.mp3");    // sound dir
file.open(QIODevice::ReadOnly);
QByteArray arr = file.readAll(); // change it to QbyteArray
QBuffer buffer(&arr);  
qDebug() << "Buffer error = " << buffer.errorString();  // i get error from here "unkow error"

QMediaPlayer *player = new QMediaPlayer();
player->setMedia(QMediaContent(),&buffer);

player->play();
qDebug() << "Player error = " << player->errorString(); // no error ""

我在搜索时看到很多解决方案,其中一个是在stackoverflow上,解决方案是制作一个Qbuffer,将数组传递给它并将其放入setMedia但它没有工作所以我需要任何帮助来使这个代码运行或任何从QByteArray播放声音或音乐的其他方式

你忘了打开缓冲区

buffer.open(QIODevice::ReadOnly);

所以一个完整的工作演示程序是这样的:

#include <QApplication>
#include <QMediaPlayer>
#include <QFile>
#include <QBuffer>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    QFile file(R"(C:\test.mp3)");    // sound dir
    file.open(QIODevice::ReadOnly);
    QByteArray arr = file.readAll(); 

    QMediaPlayer *player = new QMediaPlayer(&a);

    QBuffer *buffer = new QBuffer(player);
    buffer->setData(arr);
    buffer->open(QIODevice::ReadOnly);

    player->setMedia(QMediaContent(),buffer);

    player->play();

    return a.exec();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM