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

    xiaoxiao2021-03-25  69

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

    转载请注明原文地址: https://ju.6miu.com/read-39828.html

    最新回复(0)