QMediaPlayer资源错误

时间:2013-08-08 19:43:06

标签: c++ qt

我在Windows 8 Pro x64上使用Qt Creator 2.7.2(Qt 5.1)。我在使用QMediaPlayer时遇到了麻烦。我的电脑上有一些MP3文件在Windows Media Player上正常运行,但QMediaPlayer无法播放。以下声明:

void MainWindow::onPlayerStateChanged(QMediaPlayer::State state)
{
    qDebug() << "onPlayerStateChanged" << state
             << media_player.error() << media_player.errorString();
    // ....
}

是输出后连接到媒体播放器的stateChanged信号的插槽:

onPlayerStateChanged QMediaPlayer::PlayingState QMediaPlayer::NoError "" 
DirectShowPlayerService::doRender: Unresolved error code 80040266
onPlayerStateChanged QMediaPlayer::StoppedState QMediaPlayer::ResourceError "" 
DirectShowPlayerService::doRender: Unresolved error code 80040266

知道什么是错的吗?

1 个答案:

答案 0 :(得分:2)

它可能与文件的ID3标签有关。

我遇到了类似的问题:我试图用QMediaPlayer播放一些MP3文件。其中一个文件生成该错误,而其他文件播放正常(在Windows 7上)。但在Linux上,它们都运行良好。

所以我在我的MP3文件上运行'file'命令,发现有问题的MP3文件有ID3版本2.4.0标签,而其他所有文件都有ID3版本2.3.0。我使用ID3标签编辑器完全删除了该文件的ID3标签,然后文件成功播放。

这里有一个疯狂的猜测:DirectShow,由QMediaPlayer用作Windows上的后端,在ID3版本2.4上窒息,只识别旧版本。 Linux上的QMediaPlayer使用GStreamer作为后端,但没有这个问题。