defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"

在Qt 5.5.0环境下使用QMediaPlayer播放音频时遇到'no service found for - "org.qt-project.qt.mediaplayer"'错误。解决方法是将Qt安装目录下的plugins/mediaservice文件夹复制到应用程序运行目录。本文提供了播放音频的代码示例,并展示了错误处理和媒体状态改变的回调函数。

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;
}



评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值