[英]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.