2

ビデオ ファイルが取り込まれ、CPU を集中的に使用する複数のタスクが開始されるシステムがあります。これらのタスクは計算コストが高いため、ファイルが既に処理されている場合は処理をスキップしたいと思います。

ビデオはさまざまなソースから提供されるため、ファイル名などは実行可能なオプションではありません。

写真を使用している場合は MD5 ハッシュを比較しますが、5 GB ~ 40 GB のビデオでは計算に時間がかかることがあります。

この方法をテストしている2つのビデオを比較するには:

  • 関連するメタデータの一致を確認する
  • ffmpeg / ffprobe でファイルの長さをチェック
  • ffmpeg を使用して、事前定義された 100 のタイムスタンプ [1-100] でフレームを抽出します
  • これらの各フレームの MD5 ハッシュを作成する
  • MD5 ハッシュを比較して一致を確認します

これを行うより効率的な方法を知っている人はいますか?または、問題にアプローチするためのより良い方法はありますか?

4

4 に答える 4

2

私は、ファイルの長さ (クイックおよびダート) から始め、MD5 に進み、フレームのチェックで終了します。早くて簡単。

もちろん、編集されたファイルを取得すると、偽陰性が発生しますが、MD5 の偽陰性が発生する可能性があり、フレームをチェックした場合でも発生する可能性があります。編集による偽陰性を防ぐことは、計算コストが非常に高くなるため、おそらくそれらを無視する方がよいでしょう。

于 2013-06-13T15:10:47.777 に答える
1

ファイルをハッシュし、ハッシュを追跡します。以下に例を示します: Java でファイルの MD5 チェックサムを取得する

非常にありそうもないことですが、数学的には 2 つの異なるファイルが同じハッシュを与える可能性があることに注意してください。非常に多くのファイル (約 2^128 ファイル) を扱っている場合は、SHA2-256 などのより優れたハッシュ アルゴリズムが必要です。しかし、おそらくここではそうではありません。

于 2013-06-13T15:13:33.210 に答える
0

MD5 ハッシュは非常に遅いです。MurmurHashなど、より高速なハッシュ関数の使用を検討してください。

衝突耐性が非常に優れており、かなり速いです。

また、最初にファイル サイズを確認する必要があります。これにより、時間がかからず、不要なハッシュ計算が回避されます。

于 2013-06-13T15:13:13.043 に答える