একটি ফাইলের এমপি 3, ফ্ল্যাক অডিও ডেটা, হেডার ডেটা (আইডি 3 ট্যাগ) উপেক্ষা করে কীভাবে তুলনা করবেন?


16

আমি কয়েকটি স্থানে কিছু অডিও ফাইল ব্যাক আপ করেছি এবং একটি ব্যাকআপে আইডি 3 ট্যাগ যুক্ত করেছি তবে অন্যটি নয়, যেহেতু সময় পার হয়ে গেছে আমার নিজস্ব স্মৃতি ব্যাকআপগুলি আসলে একই কিনা তা নিয়ে বিবর্ণ হয়ে গেছে তবে এখন একটিতে আইডি 3 ডেটা রয়েছে এবং অন্যান্য না, মৌলিক বাইনারি তুলনা ব্যর্থ হবে এবং পরিদর্শন করা জটিল।

আইডি 3 এর মতো শিরোনাম ডেটা ব্যবহার করে এমপি 3, ফ্ল্যাক ফাইল এবং অন্যান্য ফাইলগুলিতে কেবল অডিও ডেটা (শিরোনাম নয়, আইডি 3 নয়) তুলনা করার জন্য কি কোনও সরঞ্জাম রয়েছে?

তুলনা ছাড়িয়ে এখানে একটি থ্রেড শুরু করেছেন: http://www.scootersoftware.com/vulletin/showthread.php?t=7413

এই কাজটি করে এমন অন্যান্য তুলনামূলক সফ্টওয়্যার বিবেচনা করবে

উত্তর:


8

আহ, চিরকালীন দুর্দশা। আমি নিজে এতক্ষণ এই প্রশ্নের সাথে লড়াই করেছি এবং এতগুলি নকল-ফাইল-সন্ধানকারী অ্যাপ্লিকেশন চেষ্টা করেছি যা শেষ পর্যন্ত ছেড়ে দিয়েছি এবং নিজেই একটি লেখার সিদ্ধান্ত নিয়েছি। এবং তারপরে আমি অলডুপ খুঁজে পেয়েছি

অলডাপ আমাকে অনির্দিষ্টকালের জন্য আমার নিজের প্রকল্পটি ব্যাক-বার্নার হিসাবে তৈরি করেছে কারণ এটি একটি দ্রুতগামী ডিএফএফ যার যথাক্রমে তাদের আইডি 3 ট্যাগ এবং এক্সিফ ডেটা উপেক্ষা করে এমপি 3 এবং জেপিইজি ফাইলগুলির তুলনা করার ক্ষমতা রাখে। আরও ভাল, মাইকেল থুমারার প্রতিক্রিয়া জানাতে খুব প্রতিক্রিয়াশীল এবং বাগগুলি সংশোধন করতে এবং পরামর্শগুলি বাস্তবায়নের জন্য দ্রুত (আপনি এফএলএসি শিরোনাম উপেক্ষা করার পরামর্শ দিতে পারেন)। এগুলি সর্বোপরি শীর্ষে রাখতে, অলডুপ বিনামূল্যে free


6

শেল এ এটি করার একটি উপায় এখানে। আপনার দরকার avconv, যা দেবিয়ান / উবুন্টুতে রয়েছে libav-tools

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

আপনি এর মতো একটি লাইন পাবেন:

CRC=0xabfdfe10

এটি প্রতিটি ফ্রেমের অডিও ডেটার তুলনা করবে এবং এর জন্য একটি সিআরসি তৈরি করবে। সুতরাং এর মতো একটি কমান্ড একাধিক ফাইলের তুলনা করতে পারে:

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

খুব দ্রুত নয়, তবে ডুপ্লিকেটগুলি পরীক্ষা করতে এমপি 3 ফাইলে একটি অনন্য চেকসাম রাখার জন্য পুরোপুরি কাজ করুন। ধন্যবাদ.
ফ্রেড 727

আপনি পিএইচপি ব্যবহার করতে পারলে একটি দ্রুত বিকল্প হ'ল জেটিড ৩ গ্রন্থাগার: getid3.org/phpBB3/viewtopic.php?f=3&t=1936
fred727

3
@ fred727 আমি avconvম্যান পৃষ্ঠাটি পরীক্ষা করেছি এবং বুঝতে পেরেছি যে crcবিকল্পটি অডিওকে ডিকোড করে এবং ডিকোডড অডিওর সিআরসি গণনা করে। তবে আপনি এটিকে অডিও কোডেক সেট করে এড়াতে পারবেন copy। এখন, আমার সিস্টেমে কমান্ডটি 1.13 সেকেন্ডের পরিবর্তে 0.13 সেকেন্ডে চলে। আমি উত্তর আপডেট করেছি, তাই এখন আপনি পিএইচপি ব্যবহার এড়াতে পারেন। :)
blujay

2

বাইনারি তুলনামূলক প্লাগইন সহ Foobar2000 এটি করবে।


1
+1 ফুবার 2000 চমত্কার দেখাচ্ছে। কেন? কারণ এটি যথাযথ উইন্ডোজ নেটিভ ইউআই ব্যবহার করে, দেখতে সুন্দর এবং হালকা ওজনযুক্ত এবং সংক্ষিপ্ততর যেমন ভিএনসির মতো কার্যক্ষমতার সাথে সমৃদ্ধ এবং আসলে এমন তথ্য এবং বৈশিষ্ট্যগুলি সরবরাহ করে যা একটি সত্যই চায় - যেমন গানের দৈর্ঘ্য ইত্যাদি। উইন্ডোজ মিডিয়া প্লেয়ার এবং উইনএম্প এই তথ্যটি প্রদর্শন করে না এবং পরিবর্তে বিশিষ্টভাবে রাখে অস্পষ্ট বৈশিষ্ট্য যা একটি খুব কমই ব্যবহার করবে would বাইনারি কম্পেটার আমি যে প্রশ্নটি জিজ্ঞাসা করছি তার একটি দুর্দান্ত বৈশিষ্ট্য। ধন্যবাদ।
therobyouknow

আমি খুশি তুমি এটা পছন্দ করেছো!
আফরাজায়

2

সম্ভাব্য সমাধান হিসাবে আপনি কোনও সরঞ্জামকে মেটাডেটা তথ্য ছাড়াই সঙ্কুচিত স্ট্রিমে ( pcm, wav) রূপান্তর করতে এবং তারপরে তুলনা করতে পারেন। রূপান্তরকরণের জন্য আপনি আপনার পছন্দ মতো যে কোনও সফটওয়্যার ব্যবহার করতে পারেন ffmpeg, soxবা avidemux

উদাহরণস্বরূপ আমি ffmpeg দিয়ে এটি কীভাবে করি

বলুন যে আমার কাছে উদাহরণস্বরূপ 2 টি পৃথক মেটাডেটা যুক্ত ফাইল রয়েছে: $ diff Original.mp3 Possible-dup.mp3 ; echo $? Binary files Original.mp3 and Possible-dup.mp3 differ ব্রুট ফোর্স তুলনা অভিযোগ তারা পৃথক।

তারপরে আমরা কেবল রূপান্তরিত করি এবং শরীরকে পৃথক করি: $ 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 $?অংশটি কেবল রিটার্ন কোডটি দেখার জন্য প্রদর্শনের উদ্দেশ্যে।

একাধিক ফাইল প্রক্রিয়াজাতকরণ (ট্রান্সভার্স ডিরেক্টরি)

আপনি সংগ্রহ সদৃশ চেষ্টা চান এটা ক্যালকুলেট চেকসাম মূল্য আছে (যে কোন মত crc, md5, sha2, sha256) ডেটা এবং তারপর ঠিক আছে দুর্ঘটনায় পাবেন।

যদিও এটির প্রশ্নের আওতার বাইরে, আমি ডিরেক্টরি সম্পর্কিত অ্যাকাউন্টে কেবলমাত্র মেটাডেটা বিবেচনা না করেই ফাইলগুলির নকলগুলি কীভাবে সন্ধান করতে পারি সে সম্পর্কে কিছু সহজ পরামর্শ দেব।

  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 কোনও আরডিবিএমএস সেখানে সমষ্টিগত গণনা এবং এই জাতীয় ডেটা নির্বাচন করতে খুব সহায়ক হবে। তবে খাঁটি কমান্ড-লাইন সমাধানটি চালিয়ে যান আপনি আরও সহজ পদক্ষেপগুলি করতে চাইতে পারেন।

সদৃশ হ্যাশগুলি দেখুন যদি কোনও হয় (এটি কীভাবে কাজ করে তা দেখানোর জন্য অতিরিক্ত পদক্ষেপ, ডুপগুলি সন্ধানের জন্য প্রয়োজন হয় না): $ 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 regexpawk নিদর্শন গণনা করার জন্য একটি সহজ স্ক্রিপ্ট।


1
+1 ধন্যবাদ হাব্বিটাস - মুক্ত উত্সের ভিত্তিতে একটি দুর্দান্ত স্ব-অন্তর্ভুক্ত সমাধান। জানা ভাল. একটি ব্যাচে রাখার জন্যও দরকারী।
থেরোবিউকন

1

আমি এই প্রশ্নটি বাইওন্ডের তুলনা ফোরামেও জিজ্ঞাসা করেছি, এবং তুলনার বাইরেও কোনও সমাধান দেয়:

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

উভয় পন্থা বিবেচনা করার মতো:

  • অলডুপ সমাধানটি সবচেয়ে ভাল তবে যদি আপনি কোন ফাইলের কপিগুলি সংরক্ষণ করা হয় এবং কোনটি ফোল্ডার ট্রিতে ফেলে দেওয়া হয় সেদিকে খেয়াল রাখেন না এবং আপনি যে একই ফোল্ডারে চালাতে চান তাতে ট্যাগ এবং নন-ট্যাগ করা ফাইলের মিশ্রণ রয়েছে সদৃশ চেক।

  • আপনি যদি ডায়রিট্রি / ফোল্ডার ট্রি ধরে রাখতে চান এবং তুলনামূলকভাবে সেরা হন তবে 2 টি পৃথক ফোল্ডার / ডিরেক্টরি কাঠামো তুলনা করতে পারেন, অন-ফ্লাই অ-ধ্বংসাত্মক ফ্ল্যাট-ট্রি বিকল্প ব্যবহার করে সহায়তা করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.