c – QMediaPlayer资源错误

我在
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

知道什么是错的吗?

最佳答案 它可能与文件的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作为后端,没有这个问题.

点赞