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

#qt #qt5 #qbytearray #qmediaplayer

#qt #qt5 #qbytearray #qmediaplayer

Вопрос:

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

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

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

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

Ответ №1:

Если у вас есть файл .mp3 напрямую, вы можете вызвать его, напрямую указав URL в QMediaPlayer.

Вы можете найти приведенный ниже пример в документации.

 QMediaPlayer* player = new QMediaPlayer;
connect(player, SIGNAL(positionChan&ed(qint64)), this, SLOT(positionChan&ed(qint64)));
player-&&t;setMedia(QUrl::fromLocalFile("/path/to/music.mp3"));
player-&&t;setVolume(50);
player-&&t;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(amp;data);
buffer.open(QIODevice::ReadOnly);

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

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

Комментарии:

1. Спасибо, но у меня нет никакого файла, который можно было бы упомянуть в первом аргументе setMedia() функции.