Saya telah mencadangkan beberapa file audio di 2 tempat dan menambahkan tag ID3 ke dalam satu cadangan tetapi tidak yang lain, karena waktu telah berlalu ingatan saya sendiri telah memudar apakah cadangan sebenarnya sama, tetapi sekarang satu memiliki data ID3 dan lainnya tidak, pembandingan biner dasar akan gagal dan pemeriksaan akan merepotkan.
Apakah ada alat untuk membandingkan hanya data audio (bukan header, ID3) di mp3, file flac, dan file lain menggunakan data header seperti ID3.
memulai utas yang tak terbandingkan di sini: http://www.scootersoftware.com/vbulletin/showthread.php?t=7413
akan mempertimbangkan perangkat lunak pembanding lainnya yang melakukan tugas ini
sumber
avconv
halaman manual dan menyadari bahwacrc
opsi menerjemahkan audio dan menghitung CRC dari audio yang diterjemahkan. Tetapi Anda dapat menghindarinya dengan mengatur audio codec kecopy
. Sekarang, di sistem saya, perintah berjalan dalam 0,13 detik, bukan 1,13 detik. Saya memperbarui jawabannya, jadi sekarang Anda dapat menghindari menggunakan PHP. :)Foobar2000 dengan plugin Binary Comparator akan melakukan ini.
sumber
Sebagai solusi yang memungkinkan, Anda dapat menggunakan alat apa pun untuk mengonversi file ke aliran terkompresi (
pcm
,wav
) tanpa info metadata dan kemudian membandingkannya. Untuk konversi, Anda dapat menggunakan perangkat lunak apa pun yang Anda sukaffmpeg
,sox
atauavidemux
.Misalnya bagaimana saya melakukannya dengan ffmpeg
Katakanlah saya punya untuk contoh itu 2 file dengan metadata yang berbeda:
$ diff Original.mp3 Possible-dup.mp3 ; echo $? Binary files Original.mp3 and Possible-dup.mp3 differ
Perbandingan kasar memaksa mereka berbeda.Kemudian kita cukup konversi dan diff tubuh:
$ 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 $?
Bagian tentunya hanya untuk tujuan demonstrasi untuk melihat kode kembali.Memproses banyak file (melintasi direktori)
Jika Anda ingin mencoba duplikat dalam koleksi itu harus layak untuk checksum menghitung (setiap seperti
crc
,md5
,sha2
,sha256
) data dan kemudian hanya menemukan ada tabrakan.Meskipun di luar ruang lingkup pertanyaan itu saya akan menyarankan beberapa saran sederhana bagaimana menemukan duplikat file dalam direktori akuntansi hanya isinya tanpa pertimbangan metadata.
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
File akan terlihat seperti:$ cat mp3data.hashes ad48913a11de29ad4639253f2f06d8480b73d48a5f1d0aaa24271c0ba3998d02:file1.mp3 54320b708cea0771a8cf71fac24196a070836376dd83eedd619f247c2ece7480:file2.mp3 1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f:Original.mp3 8918674499b90ace36bcfb94d0d8ca1bc9f8bb391b166f899779b373905ddbc1:Other-dup.mp3 8918674499b90ace36bcfb94d0d8ca1bc9f8bb391b166f899779b373905ddbc1:Other.mp3 1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f:Possible-dup.mp3
Setiap RDBMS akan sangat membantu di sana untuk menghitung jumlah dan memilih data tersebut. Tapi teruskan solusi command-line murni Anda mungkin ingin melakukan langkah-langkah sederhana seperti lebih lanjut.Lihat duplikat hash jika ada (langkah ekstra untuk menunjukkan cara kerjanya, tidak diperlukan untuk menemukan dupes):
$ count.by.regexp.awk '([0-9a-f]+):' mp3data.hashes [1:54320b708cea0771a8cf71fac24196a070836376dd83eedd619f247c2ece7480]=1 [1:1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f]=2 [1:ad48913a11de29ad4639253f2f06d8480b73d48a5f1d0aaa24271c0ba3998d02]=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 adalah
awk
skrip sederhana untuk menghitung pola regexp.sumber
Saya juga menanyakan ini di forum Beyond Compare, seperti yang disebutkan dalam pertanyaan - dan Beyond Compare juga memberikan solusi:
http://www.scootersoftware.com/vbulletin/showthread.php?t=7413
Kedua pendekatan tersebut layak dipertimbangkan:
solusi AllDup yang terbaik jika Anda tidak peduli tentang salinan file mana yang disimpan dan yang dibuang di pohon folder direktori DAN Anda memiliki campuran file yang ditandai dan yang tidak ditandai dalam folder yang sama yang Anda ingin menjalankan duplikat cek.
Beyond Compare adalah yang terbaik jika Anda ingin mempertahankan pohon diectory / folder DAN membandingkan 2 struktur folder / direktori yang terpisah, dibantu juga dengan menggunakan opsi on-the-fly non-destructive flatten-tree option
sumber