Воспроизведение mp3 файла на ресурсе с QMediaPlayer

Я пытаюсь воспроизвести mp3-файлы, заявленные на ресурсе, но они показывают:

Btn clicked
current media: "qrc://sound/sound/FarAway.mp3"Error :  QMediaPlayer::FormatError
Media state :  QMediaPlayer::InvalidMedia

Вот как я устанавливаю медиа:

player = new QMediaPlayer(this);
player->setMedia(QUrl(mediaFilePath));
qDebug() << "current media: " << player->currentMedia().canonicalUrl().toString();

connect(player, SIGNAL(stateChanged(QMediaPlayer::State)), SLOT(handleStateChanged(QMediaPlayer::State)));
connect(player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), SLOT(handleMediaStateChanged(QMediaPlayer::MediaStatus)));
connect(player, SIGNAL(error(QMediaPlayer::Error)), SLOT(handleError(QMediaPlayer::Error)));

В соответствии с эта почта сказано QMediaPlayer нужно позвонить play() после обратного вызова mediaStatusChanged()Именно это я и сделал. Так в чем проблема???

Постскриптум Я мог бы воспроизвести mp3-файл с Пример QMediaPlayer как локальный файл.

ОБНОВЛЕНИЕ 1: я могу воспроизвести mp3 файл как локальный файл …

3

Решение

Ваша проблема больше не является проблемой, вы можете сыграть ресурс Qt в QMediaPlayer. Ответ найден Вот, и я подтверждаю это здесь, если люди ищут.

Этот код работает для меня при тестировании в моем локальном проекте.

player->setMedia(QUrl("qrc:/audio/audio/Revival_Song01.mp3"));
4

Другие решения

Вы должны воспроизвести файл с диска; не ресурс Qt. Так как ресурсы пока не поддерживаются. Вы можете скопировать файл с ресурса на жесткий диск на лету, а затем воспроизвести его:

QFile::copy(":/files/FarAway.mp3" , "/some/path/FarAway.mp3");
3

По вопросам рекламы [email protected]