我正在使用qmediaplayer开发视频播放器。 当我设置一个标签以显示它显示错误值的持续时间。

float duration = mediaPlayer.duration() / 1000.0f;
ui->lblDuration->setText(QDateTime::fromTime_t(duration).toString("hh:mm:ss"));
.

如果我播放持续时间为7分钟24秒标签显示“05:37:24”的视频 标签中有5小时30分钟,我找不到理由。 请帮我这个家伙......

有帮助吗?

解决方案

嗯,我找到了另一种方法。很长一点,但工作完美。

qint64 duration = mediaPlayer.duration();

int seconds = (duration/1000) % 60;
int minutes = (duration/60000) % 60;
int hours = (duration/3600000) % 24;

QTime time(hours, minutes,seconds);

ui->lblDuration->setText(time.toString());
.

这里我已经习惯了qint64作为变量类型,所以我不需要将float转换为整数(我在我的问题中使用了浮动值)。 我使用剩余的值设置秒,分钟和小时。 示例:在几小时内,我在3600000中具有持续时间。这意味着小时(60)*分钟(60)*毫秒(1000)。这给了我确切的时间,然后得到24个(天)的剩余时间,因为确保没有几天。(这是一个视频真的不可能,而是为了确保)。

然后将它们转换为QTime(因为我在“hh:mm:ss”格式中需要它)。后来转换为字符串并使用标签显示。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top