Erreur de ressource QMediaPlayer

J’utilise Qt Creator 2.7.2 (Qt 5.1) sur Windows 8 Pro x64. J’ai des problèmes avec QMediaPlayer. Certains fichiers MP3 sur mon ordinateur fonctionnent correctement sur Windows Media Player, mais QMediaPlayer ne peut pas les lire. Déclaration suivante:

void MainWindow::onPlayerStateChanged(QMediaPlayer::State state) { qDebug() << "onPlayerStateChanged" << state << media_player.error() << media_player.errorString(); // .... } 

est le logement connecté au signal stateChanged du lecteur multimédia lève la sortie suivante:

 onPlayerStateChanged QMediaPlayer::PlayingState QMediaPlayer::NoError "" DirectShowPlayerService::doRender: Unresolved error code 80040266 onPlayerStateChanged QMediaPlayer::StoppedState QMediaPlayer::ResourceError "" DirectShowPlayerService::doRender: Unresolved error code 80040266 

Une idée de ce qui ne va pas?

Cela pourrait avoir quelque chose à voir avec les balises ID3 du fichier.

J’ai eu un problème similaire: j’essayais de lire des fichiers MP3 avec QMediaPlayer. Un des fichiers a généré cette erreur alors que les autres ont bien fonctionné (sous Windows 7). Sous Linux, ils ont tous bien joué.

J’ai donc lancé la commande ‘file’ sur mes fichiers MP3 et j’ai remarqué que le fichier MP3 problématique avait une balise ID3 version 2.4.0 alors que tous les autres avaient une version ID3 2.3.0. J’ai supprimé complètement la balise ID3 de ce fichier à l’aide d’un éditeur de balises ID3, puis le fichier a été lu avec succès.

Une hypothèse folle ici: DirectShow, qui est utilisé par QMediaPlayer en tant que serveur principal sous Windows, s’étouffe avec la version 2.4 d’ID3 et ne reconnaît que les versions antérieures. Et QMediaPlayer sur Linux utilise GStreamer en tant que backend, ce qui ne pose pas ce problème.