1.例子:
如果只是播放视频的话,可以参考官方的vedioWidget例子;
如果需要实现图片与视频轮询播放,由于图片播放,并不会发出state完毕的状态信号,故可以使用QTimer轮询的手法,进行自动切换
2.播放格式:
QMediaPlayer是对底层播放框架的封装,具体格式依赖播放框架,Windows上就是DirectShow,安装LAV Filters之类的DirectShow解码框架就可以支持更多的格式。Linux下是GStreamer,类似。
参考自
foruok
:https://bbs.csdn.net/topics/391062417
3.错误代码编写,参考官方例子,关注QMedaiPlayer的error:
//参考Qt官方例子 videowidget
typedef void (QMediaPlayer::*ErrorSignal)(QMediaPlayer::Error);
connect(&m_mediaPlayer, static_cast<ErrorSignal>(&QMediaPlayer::error),
this, &UiAdvMediaWidget::slotHandleError);
void UiAdvMediaWidget::slotHandleError() { const QString errorString = m_mediaPlayer.errorString(); QString message = "Error: "; if (errorString.isEmpty()) message += " #" + QString::number(int(m_mediaPlayer.error())); else message += errorString; m_tipLabelPtr->setText(message); }
4.发布问题:
如果发布后,发现报错:
Error: The QMediaPlayer object does not have a valid service ;
则需要找到 plugins/mediaservice,将整个mediaservice文件夹复制到与exe同一目录下即可。