Длительность 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 минут, и я не могу найти причину.
Пожалуйста, помогите мне в этом, ребята …

3

Решение

Ну, я нашел другой способ сделать это. Немного долго, но работает отлично.

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 как тип переменной, поэтому мне не нужно преобразовывать число с плавающей точкой в ​​целое число (я использовал значение с плавающей точкой в ​​своем вопросе).
Я использовал значения остатков, чтобы установить секунды, минуты и часы.
Пример: в часах я разделил длительность на 3600000. Что означает часы (60) * минуты (60) * миллисекунды (1000). Что дает мне точные часы, а затем получает остаток от 24 (дней), потому что, чтобы убедиться, что нет дней. (что на самом деле невозможно для видео, но чтобы убедиться).

Затем конвертируем их в Qtime (потому что мне нужно это в формате «чч: мм: сс»). Позже конвертировать в строку и отображать с помощью метки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]