Qt 5.5.0上使用QMediaPlayer播放音频,出现错误:defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"
将qt安装目录下的plugins下的mediaservice文件夹拷到运行目录下解决,能正常播放MP3音频。
本机目录如下: C:\Qt\Qt5.5.0\5.5\msvc2010\plugins\mediaservice
附播放音频代码如下:
构造函数中创建:
const QString soundstr("./resources/sound.mp3"); m_player = new QMediaPlayer(this); connect(m_player, SIGNAL(error(QMediaPlayer::Error)), this, SLOT(PrintError(QMediaPlayer::Error))); connect(m_player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(MediaStatusChange(QMediaPlayer::MediaStatus))); m_player->setMedia(QUrl::fromLocalFile(soundstr)); m_player->setVolume(100);
m_player->play();
//播放音频相关 //mediaplayer有错误发生时打印相应错误 void audioTest::PrintError(QMediaPlayer::Error err) { switch (err) { case QMediaPlayer::NoError: printf( "NoError"); break; case QMediaPlayer::ResourceError: printf( "ResourceError"); break; case QMediaPlayer::FormatError: printf( "FormatError"); break; case QMediaPlayer::NetworkError: printf( "NetworkError"); break; case QMediaPlayer::AccessDeniedError: printf( "AccessDeniedError"); break; case QMediaPlayer::ServiceMissingError: printf( "ServiceMissingError"); break; case QMediaPlayer::MediaIsPlaylist: printf( "MediaIsPlaylist"); break; default: printf( "qmediaplayer err:[%d]", err); break; } } //状态变化时打印相应状态 void audioTest::MediaStatusChange(QMediaPlayer::MediaStatus status) { switch (status) { case QMediaPlayer::UnknownMediaStatus: printf( "UnknownMediaStatus"); break; case QMediaPlayer::NoMedia: printf( "NoMedia"); break; case QMediaPlayer::LoadingMedia: printf( "LoadingMedia"); break; case QMediaPlayer::LoadedMedia: printf( "LoadedMedia"); break; case QMediaPlayer::StalledMedia: printf( "StalledMedia"); break; case QMediaPlayer::BufferingMedia: printf( "BufferingMedia"); break; case QMediaPlayer::BufferedMedia: printf( "BufferedMedia"); break; case QMediaPlayer::EndOfMedia: printf( "EndOfMedia"); break; case QMediaPlayer::InvalidMedia: printf( InvalidMedia"); break; default: printf( "MediaStatusChange MediaStatus[%d]", status); break; }