#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()
функции.