2013-08-08 4 views
4

Я использую Qt Creator 2.7.2 (Qt 5.1) для Windows 8 Pro x64. У меня проблемы с QMediaPlayer. На моем ПК есть некоторые файлы MP3, которые отлично работают в проигрывателе Windows Media, но QMediaPlayer не может их воспроизвести. После заявление:Ошибка ресурса 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

Вы имеете в виду mp3? Как в аудио? – Bart

+0

@Bart: да, MP3 в качестве аудиофайла. Проигрыватель Windows Media отлично работает. – Donotalo

+0

Хорошо, потому что doRender заставил меня думать, что мы имеем дело с видео здесь, где я могу представить себе лицензию, играющую роль. Но это не так. – Bart

ответ

2

Возможно, что-то связано с ID3-тегами файла.

У меня была аналогичная проблема: я пытался воспроизвести некоторые MP3-файлы с помощью QMediaPlayer. Один из файлов сгенерировал эту ошибку, в то время как остальные играли нормально (в Windows 7). Однако на Linux все они играли нормально.

Итак, я запустил команду «файл» в своих файлах MP3 и заметил, что проблемный MP3-файл имеет ID3 версии 2.4.0, а все остальные имеют ID3 версии 2.3.0. Я полностью удалил тег ID3 этого файла, используя редактор тегов ID3, после чего файл успешно воспроизведен.

Дикое предположение здесь: DirectShow, который используется QMediaPlayer в качестве backend в Windows, задыхается от ID3 версии 2.4 и только распознает старые версии. И QMediaPlayer в Linux использует GStreamer в качестве backend, который не имеет этой проблемы.

Смежные вопросы