在 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
信号(基于QMediaPlayer
的notifyInterval
发出),类似于
connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(checkPosition());
假设this
是接收者,player
和input
都被限定为可用于插槽checkPosition()
。 checkPosition()
然后看起来像
checkPosition()
if (player.position() > input())
player.stop(); // Or player.pause();
当然,您也可以将player
和input
传递给checkPosition()
插槽,但为了简单起见,我忽略了这一点。希望这会有所帮助。
【讨论】:
我正要建议这个。使用 position() 也是我唯一能想到的。 这帮助很大,谢谢!但是,如果它导致我现在必须修复的段错误。 段故障是由于在 checkPosition() 槽函数中暂停/停止视频后没有断开与 checkPosition() 槽的 positionChanged(qint64) 信号造成的。以上是关于在 X 位置停止从 QMediaPlayer 播放视频的主要内容,如果未能解决你的问题,请参考以下文章
当状态更改为媒体结束时,QMediaPlayer 状态未停止
在 Qt 和 C++ 中改变 mp3 速度 [QMediaPlayer]
QMediaPlayer.setPosition 如何适用于 mp3?
Qt系列文章之二十六(基于QMediaPlayer 在 QVideoWidget或QGraphicsVideoItem 组件上播放视频)