QmediaPlayerの期間が間違っています
-
21-12-2019 - |
質問
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値を使用しました)。 秒、分、時間を設定するために剰余者の値を使用しました。 例:時間単位で、私は3600000の期間を区別しました。これは、時間(60)*分(60)*ミリ秒(1000)を意味します。これは私に正確な時間を与え、それから何日もないことを確認するために24(日)の残りの部分を得る。(ビデオが本当に不可能ではありませんが、必ずできません)。
その後、それらをQTIMEに変換する(「HH:MM:SS」形式でこれを必要とするため)。後で文字列に変換し、ラベルを使用して表示されます。
所属していません StackOverflow