即使视频无法播放,也不会发出QMediaPlayer :: error()

时间:2015-04-15 15:32:07

标签: c++ qt qtmultimedia

我正在连接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()信号永远不会发出! Application Output为空,没有断言,play()函数为void(没有返回值表示成功或失败),playlist->addMedia always returns true

我怎么知道出了什么问题?

1 个答案:

答案 0 :(得分:0)

QMediaPlaylist(player)构造仅设置QObject父级。它没有将播放列表链接到播放器 - 播放器不知道播放列表。

因此,您从未在播放器上设置播放列表。您可能还需要将播放列表索引设置为1或者可能为零(? - 文档不清楚)。

playlist->setCurrentIndex(1);
player->setPlayList(playlist);
player->play();