7

how can i create a checksum of only the media data without the metadata to get a stable identification for a media file. preferably an cross platform approach with a library that has support for many formats. e.g. vlc, ffmpeg or mplayer.

(media files should be audio and video in common formats, images would be nice to have too)

4

3 に答える 3

3

これを実現する既存のプラットフォームに依存しないソフトウェアについては知りませんが、Java などの解釈された (プラットフォームに依存しない) 言語で実現できる方法は知っています。

基本的に、ファイルからメタデータ (タグ) を取り除き、事前にビデオ ファイルを逆多重化する必要があります。理論的には、demux とメタデータの削除後、ファイルをハッシュし、同じプロセスを経た別のファイルと比較して、タグが異なっていても同一のファイルと一致させることができます。フィンガープリントとは異なり、これは類似の曲/映画を識別するのではなく、同一のファイルを識別します (アーカイブした特定の曲の 10 個の異なるバージョンまたはビットレートが必要な場合があると想像してください。ただし、それらのいずれかの 2 つの同一のコピーが浮かんでいるのは望ましくありません)。 .

これの最も厄介な部分は、異なるアプリケーション間で必ずしも同じように実装されているとは限らないタグ​​形式の多くの異なる仕様があるため、タグを削除することです。つまり、2 つの異なるアプリケーションを介して別々に同一のタグを与えられた同じ正確なオーディオ ファイルは、同一の出力ファイルにならない場合があります。 . これがオーディオのみのチェックサムの概念に致命的な問題を引き起こす可能性がある唯一の方法は、一般的なタグ付けソフトウェアがファイルのバイナリ オーディオ部分に変更を加えるか、非標準的な方法でオーディオをパディングする場合です。

チェックサムを取得するのは簡単ですが、プラットフォームに依存しないライブラリで mpeg ファイルをデマルチプレクサーおよびデタグ化することを頭の中で認識していません。nix 環境では、mpgtx が demux と detag を実行できる優れたコマンドライン ツールであることは知っていますが、明らかにそれはプラットフォームに依存しないソリューションではありません。

たぶん、そこにいる誰かが野心的だと感じていますか?

于 2010-04-17T15:56:57.217 に答える
0

私が見つけた1つの可能な解決策は、vlcを使用しているようです:

./VLC -I rc snd.mp3 :sout='#std{mux=raw,access=file,dst=-}' vlc://quit | sha1sum
于 2010-03-07T10:35:49.123 に答える