QMediaPlayer::error() никогда не генерируется, даже если видео не воспроизводится

Я подключаю сигнал QMediaPlayer::error() и пытаюсь воспроизвести видеофайл:

QMediaPlayer *player = new QMediaPlayer;
QMediaPlaylist *playlist = new QMediaPlaylist(player);
playlist->addMedia(QUrl::fromLocalFile("/path/to/file.mp4"));

QVideoWidget *videoWidget = new QVideoWidget;
player->setVideoOutput(videoWidget);

videoWidget->resize(640, 340);
videoWidget->show();
ErrorPrinter *errorPrinter = new ErrorPrinter(player);
QObject::connect(player, SIGNAL(error(QMediaPlayer::Error)), errorPrinter, SLOT(printError(QMediaPlayer::Error)));
player->play();

Виджет видео показывает, но ничего не воспроизводится, значит где-то произошел сбой. Однако сигнал QMediaPlayer::error() никогда не испускается! Выходные данные приложения пусты, утверждений нет, функция play() равна void (нет возвращаемого значения, указывающего на успех или неудачу), и playlist- ›addMedia всегда возвращает true.

Как я должен узнать, что пошло не так?


person sashoalm    schedule 15.04.2015    source источник


Ответы (1)


Конструкция QMediaPlaylist(player) устанавливает только родителя QObject. Он не связывает плейлист с плеером - плеер не знает о плейлисте.

Итак, вы никогда не устанавливали список воспроизведения на плеере. Вам также может понадобиться установить индекс плейлиста - на 1 или, возможно, на ноль (? - в документах это неясно).

playlist->setCurrentIndex(1);
player->setPlayList(playlist);
player->play();
person Kuba hasn't forgotten Monica    schedule 16.04.2015