Pregunta

Estoy desarrollando un reproductor de video usando QMediaPlayer. Cuando configure una etiqueta para mostrar la duración de un video, muestra un valor incorrecto.

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

Si juego un video donde la duración es de 7 minutos, 24 segundos, la etiqueta muestra "05:37:24" Hay 5 horas y 30 minutos se agregan a la etiqueta y no puedo encontrar una razón. Por favor, ayúdame en este chicos ...

¿Fue útil?

Solución

Bueno, encontré otra forma de hacer esto.Poco tiempo pero funciona perfecto.

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());

Aquí he usado a QINT64 como tipo variable, por lo que no necesito convertir el flotador en entero (he usado valor de flotador en mi pregunta). He usado valores de residuos para establecer segundos, minutos y horas. Ejemplo: En horas, he curado la duración en 3600000. Lo que significa las horas (60) * minutos (60) * milisegundos (1000).Lo que me da horas exactas y luego obtén el resto de 24 (días) porque para asegurarse de que no hay días.(que realmente no es posible para un video, pero para asegurarse).

Luego convirtiéndolos a QTIE (porque necesito esto en formato "HH: MM: SS").Más tarde se convierte a cadena y se muestra usando una etiqueta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top