MPEG-2 ビデオの長さを計算するために、何年も前の古いコードを使用しています。49 秒の動画で 1 時間 49 秒を取得しているため、何かが変わったようです。
ファイル内で最後の GOP ヘッダーが検出され、4 バイトの TimeCode が抽出されます "040E2AC0"。32 ビットの LongWord では、これはリトルエンディアンで 3223981572 として読み取られます。
エンディアンは、アセンブラ関数 bswap eax を使用してスワップされます。結果は 68037312 です。一部の Pascal コードは、次のように期間を抽出します...
Hours := (TimeCode shr 26) and $1F;
Minutes := (TimeCode shr 20) and $3F;
Seconds := (TimeCode shr 13) and $3F;
時間は 1 ですが、0 である必要があります。分は 0 で正しいです。秒は 49 で正しいです。
問題をデバッグするためのビット操作が苦手です。これに何か問題がありますか?それが助けになるなら、私はビデオへのリンクを手配することができます.
どうもありがとう、ロス。