4

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

知道有什么问题吗?

4

1 回答 1

3

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

我有一个类似的问题:我试图用 QMediaPlayer 播放一些 MP3 文件。其中一个文件产生了该错误,而其他文件运行良好(在 Windows 7 上)。不过,在 Linux 上,它们都玩得很好。

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

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

于 2014-03-24T21:36:43.607 回答