문제

QMediaPlayer를 사용하여 비디오 플레이어를 개발하고 있습니다. 비디오 기간을 표시하는 레이블을 설정하면 잘못된 값이 표시됩니다.

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

재생 시간이 7 분이 소요되는 비디오를 재생하면 "05:37:24" 5 시간 30 분이 소요됩니다 라벨에 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을 정수로 변환 할 필요가 없습니다 (나는 내 질문에 플로트 값을 사용했습니다). 나는 나머지 값을 초, 분 및 시간을 설정하도록 사용했습니다. 예 : 시간이 지나면, 3600000에서 기간을 개발했습니다. 이것은 시간 (60) * 분 (60) * 밀리 초 (1000)을 의미합니다.그것은 나에게 정확한 시간을주고 나머지 24 명 (일)을 얻으려면 며칠이 아닌지 확인하십시오.(비디오는 실제로 불가능하지만 확실하지는 않지만)

다음 (HH : MM : SS "형식이 필요하기 때문에)을 q 시간으로 변환합니다.나중에 문자열로 변환하고 라벨을 사용하여 표시됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top