2013-11-18 3 views
3

Я разрабатываю видеоплеер с помощью Qmediaplayer. Когда я устанавливаю ярлык, чтобы показать продолжительность видео, он отображает неправильное значение.Ошибка QMediaplayer

float duration = mediaPlayer.duration()/1000.0f; 
ui->lblDuration->setText(QDateTime::fromTime_t(duration).toString("hh:mm:ss")); 

Если я играю в видео, где продолжительность составляет 7 минут 24 секунд метки показывает «5:37:24» Существует 5 часов и 30 минут добавляют к метке, и я не могу найти причину. Пожалуйста, помогите мне на этих ребятах ...

ответ

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 (потому что мне это нужно в формате «hh: mm: ss»). Позже конвертируйте в строку и отобразите ее с помощью метки.

Смежные вопросы