首页 > 解决方案 > QT: DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x8007007b ()

问题描述

我正在使用 Qt 版本 5.14.1。

当我尝试播放视频(.mp3)时,程序停止工作

并且给出的错误是 DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x8007007b ()

AudioPlayer::AudioPlayer(QObject *parent)
: QObject(parent)
, m_backgroundMusic(NULL)  //QMediaPlayer * m_backgroundMusic
{
    QUrl backgroundMusicUrl = QUrl::fromLocalFile(":/music/8bitDungeonLevel.mp3");

    if (QFile::exists(backgroundMusicUrl.toLocalFile()))
    {
        m_backgroundMusic = new QMediaPlayer(this);
        QMediaPlaylist * backgroundMusicList = new QMediaPlaylist();

        QMediaContent media(backgroundMusicUrl);
        backgroundMusicList->addMedia(media);
        backgroundMusicList->setCurrentIndex(0);

        backgroundMusicList->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
        m_backgroundMusic->setPlaylist(backgroundMusicList);

    }
}


void AudioPlayer::startBGM()
{

    if (m_backgroundMusic)
    {
        qDebug() << m_backgroundMusic;
        m_backgroundMusic->play();
    }
}

输出如下

QMediaPlayer(0x3987eb0)
DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x8007007b ()

我在网上搜索并将LAV过滤器添加到QT安装目录 ,我也重新启动计算机但没有任何变化。那么如何修复它?

标签: c++qt

解决方案


您的路径QUrl::fromLocalFile(":/music/8bitDungeonLevel.mp3")似乎已关闭,AFIK 没有(至少不常见):用于开始路径的路径命名方案。

更新:

有人告诉我这:/是指已编译到 Qt 应用程序中的资源,我认为使用Qt Resource Compiler (rcc)


推荐阅读