我在Windows 8 Pro x64上使用Qt Creator 2.7.2(Qt 5.1)。我在使用QMediaPlayer时遇到麻烦。我的PC上有一些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作为后端,这没有问题。