簡體   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