我在
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作为后端,没有这个问题.