Вопрос

Я разрабатываю видеоплеер с помощью 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»).Позже конвертировать в строку и отображается с помощью метки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top