在 X 位置停止从 QMediaPlayer 播放视频

Posted

技术标签:

【中文标题】在 X 位置停止从 QMediaPlayer 播放视频【英文标题】:Stop Playing a Video from QMediaPlayer at Position X 【发布时间】:2018-11-26 03:19:48 【问题描述】:

我是 Qt 的新手,我在我的一个 GUI 项目中使用 QMediaPlayer,我想在某个位置 X 停止加载的视频(来自用户在 Line Edit 上的输入)我怎么能做到这一点?我知道我可以通过 player->setPosition(Y) 设置起始位置,其中 Y 是一个整数,但是结束位置呢?

【问题讨论】:

【参考方案1】:

一个较小的选择是使用position(),它将当前位置作为qint64返回-如果您为QMediaPlayer调用play()方法,则使用类似

  while (player.position() < input) 
  player.stop();     // Or player.pause();

它将等到到达input 位置。但这种方法的缺点是阻塞while 循环,并且在不知道预期应用程序的情况下,我不知道这是否合适。最好使用QMediaPlayer::positionChanged 信号(基于QMediaPlayernotifyInterval 发出),类似于

  connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(checkPosition());

假设this 是接收者,playerinput 都被限定为可用于插槽checkPosition()checkPosition() 然后看起来像

  checkPosition() 
      if (player.position() > input()) 
          player.stop();     // Or player.pause();
      
  

当然,您也可以将playerinput 传递给checkPosition() 插槽,但为了简单起见,我忽略了这一点。希望这会有所帮助。

【讨论】:

我正要建议这个。使用 position() 也是我唯一能想到的。 这帮助很大,谢谢!但是,如果它导致我现在必须修复的段错误。 段故障是由于在 checkPosition() 槽函数中暂停/停止视频后没有断开与 checkPosition() 槽的 positionChanged(qint64) 信号造成的。

以上是关于在 X 位置停止从 QMediaPlayer 播放视频的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 QMediaPlayer 播放流媒体音频?

当状态更改为媒体结束时,QMediaPlayer 状态未停止

在 Qt 和 C++ 中改变 mp3 速度 [QMediaPlayer]

QMediaPlayer - 如何从在线广播中获取元数据?

QMediaPlayer.setPosition 如何适用于 mp3?

Qt系列文章之二十六(基于QMediaPlayer 在 QVideoWidget或QGraphicsVideoItem 组件上播放视频)