mp3、ファイル内のflacオーディオデータ、ヘッダーデータ(ID3タグ)などを無視する方法を比較するには?


16

いくつかのオーディオファイルを2か所でバックアップし、ID3タグを1つのバックアップに追加しましたが、もう1つはバックアップしませんでした。他はそうではなく、基本的なバイナリ比較は失敗し、検査は面倒です。

mp3、flacファイル、およびID3などのヘッダーデータを使用する他のファイルのオーディオデータ(ヘッダー、ID3ではなく)だけを比較するツールはありますか。

ここで比較を超えてスレッドを開始しました:http : //www.scootersoftware.com/vbulletin/showthread.php?t=7413

このタスクを行う他の比較ソフトウェアを検討します

回答:


8

ああ、永遠のp状。私自身この質問に長い間苦労し、非常に多くの重複ファイル検索アプリを試しました。そして、AllDupを見つけました

AllDupを使用すると、MP3ファイルとJPEGファイルを比較できる高速 DFFであり、それぞれID3タグとExifデータを無視するため、自分のプロジェクトを無期限にバックバーナーにしました。さらに良いことに、Michael Thummererはフィードバックに非常に敏感で、バグの修正と提案の実装を迅速に行います(FLACヘッダーを無視することを提案できます)。さらに、AllDupは無料です。


6

シェルでそれを行う方法を次に示します。avconvDebian / Ubuntuにあるが必要libav-toolsです。

$ avconv -i INPUT_FILE -c:a copy -f crc - 2>/dev/null | grep CRC

次のような行が表示されます。

CRC=0xabfdfe10

これにより、オーディオデータのすべてのフレームが比較され、CRCが生成されます。したがって、このようなコマンドは複数のファイルを比較できます。

ls *.mp3 | while read line; do echo -n "$line: "; avconv -i "$line" -f crc - 2>/dev/null | grep CRC; done

それほど高速ではありませんが、mp3ファイルに一意のチェックサムを付けて重複をチェックするように完全に機能します。ありがとうございました。
fred727

phpを使用できる場合の高速な代替手段はgetid3ライブラリです:getid3.org/phpBB3/viewtopic.php?f
&

3
@ fred727私はavconvマニュアルページをチェックし、crcオプションがオーディオをデコードし、デコードされたオーディオのCRCを計算することに気付きました。ただし、オーディオコーデックをに設定することで、これを回避できますcopy。さて、私のシステムでは、コマンドは1.13秒ではなく0.13秒で実行されます。答えを更新したので、PHPの使用を避けることができます。:)
ブルージェイ

2

Binary Comparatorプラグインを備えたFoobar2000がこれを行います。


1
+1 Foobar2000はFANTASTICに見えます。どうして?適切なWindowsネイティブUIを使用するため、VNCのように見た目が良く軽量でミニマルでありながら機能が豊富で、実際に必要な情報と機能(歌の長さなど)を提供します。WindowsMedia PlayerおよびWinAmpはこの情報を表示せず、まれにしか使用されない不明瞭な機能。Binary Comparatorは、私が尋ねている質問に対する優れた機能です。ありがとう。
therobyouknow

気に入ってくれてうれしい!
afrazier

2

可能な解決策として、任意のツールを使用して、ファイルをメタデータ情報なしで非圧縮ストリーム(pcmwav)に変換してから比較できます。変換するために、あなたが好きなソフトウェアを使用するかffmpegsoxまたはavidemux

たとえば、ffmpegでそれを行う方法

その例に対して、異なるメタデータを持つ2つのファイル $ diff Original.mp3 Possible-dup.mp3 ; echo $? Binary files Original.mp3 and Possible-dup.mp3 differ があるとします。ブルートフォース比較では、それらが異なると文句を言います。

次に、bodyを変換して比較します。 $ diff <( ffmpeg -loglevel 8 -i Original.mp3 -map_metadata -1 -f wav - ) <( ffmpeg -loglevel 8 -i Possible-dup.mp3 -map_metadata -1 -f wav - ) ; echo $? 0

コース外の ; echo $?部分は、戻りコードを見るためのデモンストレーションのみを目的としています。

複数のファイルの処理(トラバースディレクトリ)

あなたは、コレクション内の重複を試してみたい場合には、計算のチェックサムの価値を持っている(いずれかのようなcrcmd5sha2sha256)データの、その後、ちょうどそこに衝突を見つけます。

それはその質問の範囲外ですが、ディレクトリアカウンティング内のファイルの重複を見つける方法の簡単な提案を提案します。

  1. 最初に各ファイルのデータのハッシュを計算します(そして次の処理のためにファイルに配置します): for file in *.mp3; do printf "%s:%s\n" "$( ffmpeg -loglevel 8 -i "$file" -map_metadata -1 -f wav - | sha256sum | cut -d' ' -f1 )" "$file"; done > mp3data.hashes ファイルは次のようになります: $ cat mp3data.hashes ad48913a11de29ad4639253f2f06d8480b73d48a5f1d0aaa24271c0ba3998d02:file1.mp3 54320b708cea0771a8cf71fac24196a070836376dd83eedd619f247c2ece7480:file2.mp3 1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f:Original.mp3 8918674499b90ace36bcfb94d0d8ca1bc9f8bb391b166f899779b373905ddbc1:Other-dup.mp3 8918674499b90ace36bcfb94d0d8ca1bc9f8bb391b166f899779b373905ddbc1:Other.mp3 1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f:Possible-dup.mp3 RDBMSは、カウントを集計し、そのようなデータを選択するのに非常に役立ちます。ただし、さらに簡単な手順を実行したい場合がある純粋なコマンドラインソリューションを続行します。

重複するハッシュがある場合はそれを参照してください(それがどのように機能するかを示すための追加のステップであり、重複の検出には不要です)。 $ count.by.regexp.awk '([0-9a-f]+):' mp3data.hashes [1:54320b708cea0771a8cf71fac24196a070836376dd83eedd619f247c2ece7480]=1 [1:1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f]=2 [1:ad48913a11de29ad4639253f2f06d8480b73d48a5f1d0aaa24271c0ba3998d02]=1

  1. そしてすべて一緒にコンテンツによって複製されたファイルをリストします $ grep mp3data.hashes -f <( count.by.regexp.awk '([0-9a-f]+):' mp3data.hashes | grep -oP '(?<=\[1:).{64}(?!]=1$)' ) | sort 1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f:Original.mp3 1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f:Possible-dup.mp3 8918674499b90ace36bcfb94d0d8ca1bc9f8bb391b166f899779b373905ddbc1:Other-dup.mp3 8918674499b90ace36bcfb94d0d8ca1bc9f8bb391b166f899779b373905ddbc1:Other.mp3

count.by.regexp.awkは、awk正規表現パターンをカウントする単純なスクリプトです。


1
+1 Thanks Hubbitus-オープンソースに基づいた優れた自己完結型ソリューション。知っておくといい。バッチ処理にも便利です。
therobyouknow

1

質問で述べたように、Beyond Compareフォーラムでもこれを尋ねました。BeyondCompareは解決策も提供しています。

http://www.scootersoftware.com/vbulletin/showthread.php?t=7413

両方のアプローチを検討する価値があります。

  • AllDupソリューションは、ファイルのどのコピーが保存され、ディレクトリフォルダーツリーで破棄されるかを気にせず、実行したい同じフォルダーにタグ付きファイルとタグなしファイルが混在している場合に最適です。重複チェックオン。

  • 区画/フォルダツリーを保持し、2つの別個のフォルダ/ディレクトリ構造を比較する場合は、Beyond Compareが最適です。オンザフライの非破壊的なフラット化ツリーオプションを使用することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.