Как я могу воспроизводить музыку, используя данные QByteArray?

У меня есть QByteArray, который создан следующим образом:

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

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

И я получил его где-то еще, как я могу воспроизвести его, используя QMediaPlayer, не сохраняя его в файл?


person Anthony    schedule 12.08.2020    source источник


Ответы (1)


Если у вас есть файл .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();
person Pavan Chandaka    schedule 12.08.2020
comment
Спасибо, но у меня нет файла, упомянутого в первом аргументе функции setMedia(). - person Anthony; 15.08.2020