如何使用 QByteArray 数据播放音乐?

How can i play music using QByteArray data?

我有一个 QByteArray,它是这样创建的:

QByteArray data;
QFile file("/path/to/music.mp3");

if (file.open(QIODevice::ReadOnly))
{
    data = file.readAll();
}

而且我在其他地方找到了它,我如何使用 QMediaPlayer 播放它而不将其保存到文件?

如果直接有.mp3文件,直接设置QMediaPlayer的URL即可调用。

您可以在文档中找到以下示例。

QMediaPlayer* player = new QMediaPlayer;
connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(positionChanged(qint64)));
player->setMedia(QUrl::fromLocalFile("/path/to/music.mp3"));
player->setVolume(50);
player->play();

https://doc.qt.io/qt-5/qmediaplayer.html#setMedia

如果出于显而易见的原因,您必须使用 QByteArray,也许您可​​以按照下面的说明尝试(未尝试和测试):

//BYTE ARRAY
QByteArray data;
if (file.open(QIODevice::ReadOnly))
{
    data = file.readAll();
}

//CREATE A BUFFER OBJECT WITH BYTE ARRAY
QBuffer buffer(&data);
buffer.open(QIODevice::ReadOnly);

//CREATE MEDIA PLAYER OBJECT
QMediaPlayer* player = new QMediaPlayer;

//SET MEDIA CONTENT AND BUFFER.
player->setMedia(QUrl::fromLocalFile("/path/to/music.mp3"),&buffer);
player->play();