Я пытаюсь воспроизвести 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 файл как локальный файл …
Ваша проблема больше не является проблемой, вы можете сыграть ресурс Qt в QMediaPlayer. Ответ найден Вот, и я подтверждаю это здесь, если люди ищут.
Этот код работает для меня при тестировании в моем локальном проекте.
player->setMedia(QUrl("qrc:/audio/audio/Revival_Song01.mp3"));
Вы должны воспроизвести файл с диска; не ресурс Qt. Так как ресурсы пока не поддерживаются. Вы можете скопировать файл с ресурса на жесткий диск на лету, а затем воспроизвести его:
QFile::copy(":/files/FarAway.mp3" , "/some/path/FarAway.mp3");