我在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
知道什么是错的吗?
答案 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作为后端,但没有这个问题。