我正在使用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分钟,我找不到理由。 请帮帮我这个家伙......
答案 0 :(得分:1)
我找到了另一种方法。有点长,但工作完美。
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”格式)。稍后转换为字符串并使用标签显示。