【发布时间】:2020-07-24 11:19:46
【问题描述】:
我试图像这样获得当前媒体的位置:
player->setNotifyInterval(500);
connect(Player::player, &QMediaPlayer::positionChanged, this, &Player::ChangedPosition);
void Player::ChangedPosition(qint64 position)
{
Player::currentPosition = position; //qint64 variable
//currentPosition still 0
qDebug() << "current position: " << currentPosition;
return;
}
我试图这样做(因为 Qt 的文档 没有说这个插槽 QMediaPlayer::setPosition)
connect(Player::player, &QMediaPlayer::positionChanged, this, &QMediaPlayer::setPosition);
我有两个班级(Playlist 和 Player):
playlistmanager - Playlist 类的对象
playermanager - Player 类的对象
设置播放列表并播放:
//set current media
playlistmanager->GetCurrentPlayList()->setCurrentIndex(newIndex);
//play this media
playermanager->play();
//set current position
playermanager->SetPositionOfTrack(playermanager->GetPositionOfTrack());
在这段代码媒体播放之后,但从头开始
这里Player类的两个方法:
qint64 Player::GetPositionOfTrack()
{
return currentPosition; //qint64 variable in class
}
void Player::SetPositionOfTrack(const qint64 position)
{
player->setPosition(position);
return;
}
那么,我怎样才能获得当前媒体的当前位置?
【问题讨论】:
-
你能展示最小的例子来重现和源代码吗?
-
您是否启动了播放器(例如通过play())?
-
@Scheff 当然。添加代码。
-
尝试用
playermanager->SetPositionOfTrack(qint64(1000))替换playermanager->SetPositionOfTrack(playermanager->GetPositionOfTrack())??在我看来,您正在将轨道的位置设置为自身 -
@gui3 你是对的。我正在保存媒体的位置并再次设置它。我需要它,但
currentPosition = 0。我该如何解决?
标签: c++ qt qmediaplayer