質問

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」形式でこれを必要とするため)。後で文字列に変換し、ラベルを使用して表示されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top