如何使用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();

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...