どちらか一方の変更に基づいて、ファイル全体またはセグメントを比較してコピーするプログラムを作成しています(Rsync風ですが、Unisonに似ています)。主なアイデアは、複数の場所で音楽フォルダー (すべての mp3) を最新の状態に保つことです。
ファイル全体をコピーするのではなく、ファイルのごく一部のみが変更された場合に、セグメント化された更新を送信したいと考えています。このためには、ファイルのセグメントを比較する方法が必要です。
最初に、すべてのファイルのブロックのハッシュを生成しようとしました (n バイトごとにセグメントをハッシュします)。1 つの属性 (mp3 の id3v2 タグ) を変更すると、ハッシュされたすべてのブロックが変更されることに気付きました。新しい情報を取得するにつれてヘッダーが成長していると推測されるため、これは理にかなっています。
これは私の実際の質問につながります。mp3 のヘッダーの長さを決定する方法を知りたいので、2 つの同等のハッシュを作成できます。
1) ファイルのメタ情報 (ヘッダー)
2) 音声付きの実際の mpeg ストリーム (タグ情報を変更するだけであれば、このハッシュは変更されないはずです)
他に何か不足していますか?
ありがとう!
タイ