c++ - QMediaplayer 持续时间错误

标签 c++ qt qdatetime qmediaplayer

我正在使用 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 转换为整数(我在我的问题中使用了 float 值)。 我使用余数值来设置秒、分钟和小时。 示例:以小时为单位,我将持续时间划分为 3600000。这意味着小时(60)*分钟(60)*毫秒(1000)。这给了我确切的时间,然后得到 24(天)的剩余时间,因为要确保没有天数。 (这对于视频来说确实是不可能的,但要确保)。

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

关于c++ - QMediaplayer 持续时间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20042268/

相关文章:

c++ - 可以传递匿名变量的地址吗?

c++ - 在 C++ 中,我们可以使用 { } 进行 C 风格转换吗?

c++ - OpenCV C++。快速计算混淆矩阵

c++ - QFile和QTextStream帮助(用Usernames、passwords和names为用户写一个ID)

c++ - C++获取QDateTime生成时间的可靠方法

c++ - 操作顺序是线程安全的吗?

c++ - 重载的 new 运算符可以接收参数传递给对象的构造函数吗?

Qt:QTranslator::translate() 的 n param for non-singulars

c++ - 以 QMap 和 QDateTime 为键的问题

python - PyQtChart不显示数据