الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استخراج معلومات ملفات الـMP3

بدأه Mr.B في 11 يونيو 2013 · 2 رد · 573 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

احتجت لطريقة استخراج معلومات ملفات الـmp3، هناك عدد من المكتبات الجاهزة التي تساعدك باستخراج معلومات ملفات الـmp3 الا أنه بعد البحث والتدقيق وجدت أنه لايلزم فعلياً استخدام مكتبة خارجية بل يمكنك عمله بنفسك إذا كان مشروعك صغير.

تُخزن معلومات ملفات الـmp3 كالعنوان والألبوم في حاوية تسمى ID3 وهناك إصدارين رئيسية لها: ID3v1 و ID3v2، الإصدار ID3v1 له نوعين: البسيط والمطور، هذا الأخير يمكن من إضافة صورة في ملف الـmp3، أما الإصدار ID3v2 له عدد من الإصدارات الفرعية ربما أهم ميزاته أنه يمكن من تحديد الترميز المستخدم في تخزين البيانات ويدعم استخدام الترميز الموحد unicode في التسمية الا أنه لايزال محدود الإستخدام. سيقتصر الحديث هنا على الإصدار ID3v1 البسيط وهو الشائع وعلى عكس ID3v1، يتواجد ID3v2 في مقدمة ملف الـmp3.

قبل البدء يلزم التنبية أن ID3 "ليست معيار" ثابت تتبناه جهة ويلزم به الجميع وفيه بعض المشاكل في تصميمه؛ لذا قد يسبب هذا مشاكل أحياناً في التوافقية. أيضاً أحياناً البيانات المخزنة قد لاتكون صحيحة، مثلاً قد تجد اسم الفنان عنوان موقع |:.

تتواجد بنية ID3v1 في الـ128 بايت الأخيرة في ملف الـmp3، لو نظرت لملف mp3 في أحد محررات الـhex مثل برنامج Hex Workshop سترى التالي:

post-231926-0-98797600-1370944970_thumb.

صيغة نصية:

00742728  54 41 47 54 65 6E 64 65 72  TAGTender
00742731  20 46 6F 72 63 65 00 00 00   Force...
0074273A  00 00 00 00 00 00 00 00 00  .........
00742743  00 00 00 00 00 00 4B 6F 74  ......Kot
0074274C  6F 00 00 00 00 00 00 00 00  o........
00742755  00 00 00 00 00 00 00 00 00  .........
0074275E  00 00 00 00 00 00 00 00 00  .........
00742767  42 65 73 74 20 48 69 74 73  Best Hits
00742770  00 00 00 00 00 00 00 00 00  .........
00742779  00 00 00 00 00 00 00 00 00  .........
00742782  00 00 00 32 30 30 32 00 00  ...2002..
0074278B  00 00 00 00 00 00 00 00 00  .........
00742794  00 00 00 00 00 00 00 00 00  .........
0074279D  00 00 00 00 00 00 00 00 00  .........
007427A6  0E 0C                       ..

يمكنك تمييز بنية ID3v1 عن طريق الوسم TAG والذي يشير لبداية بنية ID3v1، ولها التركيب التالي:

  • البايتات من 0 إلى 3 يحتوي الكلمة TAG وتشير لبداية البنية (اللون البرتقالي).
  • يليها 30 بايت تضمّ عنوان الأغنية (اللون الأحمر).
  • ثم 30 بايت لإسم الفنان (اللون الكحلي).
  • ثم 30 بايت لعنوان الألبوم (اللون الأصفر).
  • ثم 4 بايتات للسنة (اللون السماوي).
  • يتبعها 28 أو 30 بايت للتعليق (اللون الأسود)، التعليق قد يكون أي شيء مثل "نسخة أصلية"، "نسخة راديو". 7. يتبع التعليق بايت واحد صفر.
  • البايت قبل الأخير يشير لترتيب التسجيل على الشريط track number (اللون الأبيض).
  • البايت الأخير يشير لنوع الأغنية مثل بلوز، هاوس، هب-هوب (اللون الزيتي).

ملاحظات:

  • يخزن العنوان، واسم الفنان، وعنوان الألبوم، والسنة على شكل رموز آسكي، وإذا كان العنوان مثلاً أقل من 30 فتُملأ المساحة الزائدة بأصفار NULL أو مسافات.
  • التعليق قد يشغل 28 إلى 30 بايت متبوع بصفر.
  • ترتيب التسجيل و نوع الأغنية هما آخر بايتين، إقرأها من الأخير لأن حجم التعليق غير محدد كما أشرت. وتخزن على شكل رقم، مثلاً في المثال رقم التسجيل 0x0E أي أنه التسجيل الرابع عشر. بالنسبة لنوع الأغنية 0x0C - 12 فيعني Other، هذه قائمة بالأرقام ومعانيها.

كما قلت أن هذا ليس معيار فقط لاتطابق هذه الأرقام دوماً، أيضاً هذه أول 148 بينما يسع حجم المتغير لـ108 نوع آخر.

هذا تطبيق لقراءة معلومات الملف باستخدام بايثون mp3metadata.

بالتوفيق

2
#2

واايد مفيد ، ماذا عن الفيديوهات والصور هل لها معلومات نستطيع استخراجها ؟

شكرا +1

−1
#3

أي ملف لابد أن يحتوي معلومات تصف هذا الملف، مثلاً صورة الـgif هذه:

 

GifSample.gif

 

post-231926-0-08928600-1370991522_thumb.

 

أول 3 بايتات تعرف بأن الصورة GIF -الأحمر- ويليها 3 بايتات تخبر بإصدار الصورة 87a أو 89a -الأخضر- ثم بايتين للعرض -الأصفر 0x0020 يعني عرضها 32 بكسل - وبايتين للإرتفاع -الكحلي 0x0034 يعني 52 بكسل- وتوجد أيضاً معلومات أخرى لكنها تخص إضهار الصورة كالألوان. إذا أردت معرفت معلومات ملف x فابحث عن x metadata،

1

مواضيع مشابهة