如何使用QByteArray数据播放音乐



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

QByteArray data;
QFile file("/path/to/music.mp3");
if (file.open(QIODevice::ReadOnly))
{
data = file.readAll();
}

我在其他地方得到了它,我怎么能在不保存到文件的情况下使用QMediaPlayer播放它?

如果您直接拥有.mp3文件,您可以直接将URL设置为QMediaPlayer来调用它。

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

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();

最新更新