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


person Madusha    schedule 18.11.2013    source источник


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

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

person Madusha    schedule 19.11.2013