【发布时间】:2017-03-02 08:30:28
【问题描述】:
我有一个较长的 wav 文件,我想在其中播放较小的部分。 我将 startTime 和 endTime 存储为 qint64 并且已经加载了音频文件:
player = new QMediaPlayer;
connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(slotTick(qint64)));
player->setNotifyInterval(10);
player->setMedia(QUrl::fromLocalFile(mediasource));
...
player->setPosition(startTime);
player->play();
我使用 positionChanged 信号观察位置,并使用以下插槽,在达到所需部分的结尾时停止播放:
void PlayerWidget::slotTick(qint64 time){
if(endTime >= 0 && time >= endTime){
if(player->state() == QMediaPlayer::PlayingState){
player->stop();
}
}
不幸的是,程序在播放器停止后不久就崩溃了。可能是什么原因
【问题讨论】:
-
是否有任何错误信息?你还有其他线索吗?
-
我有同样的问题(使用 PyQt5.7)。使用连接到 positionChanged 的 slotTick 暂停时出现访问冲突。如果我暂停或停止,它会崩溃。非常相似的代码在 Phonon 上运行良好。
标签: c++ qt qmediaplayer