我想使用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();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句