2

QByteArray から音楽を再生したいので、データベースからサウンドを取得したり、Tcp などを使用してネットワーク経由で転送したりするなど、多くの場合に使用できます。
したがって、これらのコード行を使用します

QFile file("E:\\amr.mp3");    // sound dir
file.open(QIODevice::ReadOnly);
QByteArray arr = file.readAll(); // change it to QbyteArray
QBuffer buffer(&arr);  
qDebug() << "Buffer error = " << buffer.errorString();  // i get error from here "unkow error"

QMediaPlayer *player = new QMediaPlayer();
player->setMedia(QMediaContent(),&buffer);

player->play();
qDebug() << "Player error = " << player->errorString(); // no error ""

検索すると多くの解決策が表示されます.そのうちの1つはstackoverflowにあります.解決策はQbufferを作成し、それに配列を渡してsetMediaに入れることですが、うまくいかなかったので、このコードを実行するための助けが必要です. QByteArray から音声または音楽を再生する別の方法

4

1 に答える 1

5

でバッファを開くのを忘れただけです

buffer.open(QIODevice::ReadOnly);

したがって、完全に機能するデモ プログラムは次のとおりです。

#include <QApplication>
#include <QMediaPlayer>
#include <QFile>
#include <QBuffer>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    QFile file(R"(C:\test.mp3)");    // sound dir
    file.open(QIODevice::ReadOnly);
    QByteArray arr = file.readAll(); 

    QMediaPlayer *player = new QMediaPlayer(&a);

    QBuffer *buffer = new QBuffer(player);
    buffer->setData(arr);
    buffer->open(QIODevice::ReadOnly);

    player->setMedia(QMediaContent(),buffer);

    player->play();

    return a.exec();
}
于 2016-06-28T18:30:00.993 に答える