Почему плеер не может воспроизводить звук, предоставленный QBuffer?
Я пытаюсь воспроизвести пару аудиофайлов, хранящихся в объекте, один за другим. Я использовал объект, чтобы иметь возможность воспроизводить звук, используя
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QByteArray audio;
QBuffer buffer;
buffer.setBuffer(&audio);
QAudioOutput output;
QMediaPlayer player;
player.setAudioOutput(&output);
player.setSourceDevice(&buffer);
QFile file(":/audio/one.m4a");
qDebug() << (file.open(QFile::ReadOnly) ? "opened successfully." : "Failed to open.");
audio = file.readAll();
file.close();
buffer.open(QBuffer::ReadOnly);
player.play(); // plays one.m4a successfully.
QObject::connect(&player, &QMediaPlayer::playbackStateChanged, [&](QMediaPlayer::PlaybackState state)
{
if(state == QMediaPlayer::StoppedState) {
file.setFileName(":/audio/two.m4a");
qDebug() << (file.open(QFile::ReadOnly) ? "opened successfully." : "Failed to open.");
audio = file.readAll();
file.close();
player.play(); // fails to play two.m4a
}
});
return app.exec();
}
Я просто слышу звуковой эффект, похожий на звуковой сигнал, когда плеер воспроизводит второй звук.
Я создал другой объект, представляющий то же самое
QBuffer one;
QObject::connect(&player, &QMediaPlayer::playbackStateChanged, [&](QMediaPlayer::PlaybackState state)
{
if(state == QMediaPlayer::StoppedState) {
one.setBuffer(&audio);
file.setFileName(":/audio/two.m4a");
qDebug() << (file.open(QFile::ReadOnly) ? "opened successfully." : "Failed to open.");
audio = file.readAll();
file.close();
one.open(QBuffer::ReadOnly);
player.setSourceDevice(&one);
player.play(); // plays two.m4a successfully.
}
});
return app.exec();
}