سؤال

أنا أعمل على مكتبة C التي تقرأ معلومات العلامات من ملفات الموسيقى. لقد حصلت بالفعل على ID3V2 العناية بها، لكنني لا أستطيع معرفة كيفية تنظيم ملفات OGG.

لقد فتحت ملف .ogg في هكسيدس ويمكن أن أجد بيانات العلامة لأن ذلك كان كل شيء قابل للقراءة. ولكن كل شيء بدءا من بداية الملف إلى بيانات العلامة يشبه القمامة. كيف يتم ترميز هذه البيانات؟

لا أحتاج إلى أي مساعدة في الكود الفعلي، فأنا فقط بحاجة إلى مساعدة في تصور ما يشبه رأس OGG وما الذي يستخدمه ذلك حتى أتمكن من قراءته. أود استخدام نهج غير اختراع لقراءة ملفات OGG.

لقد كنت أبحث في تنسيق FLAC., ، والتي كانت مفيدة.

يحتوي ملف Flac الذي أبحث عنه حوالي 350 بايت بين معرف "FLAC" وقسم التعليقات القابلة للقراءة البشرية، ولم يكن أي منها مقروء بشري في محرر HEX الخاص بي، لذلك أنا متأكد من أنه يجب أن يكون هناك شيئا ما مهم هناك.

أنا أستخدم Linux، وليس لدي أي نية للتنفيذ إلى Windows أو OS X. لذلك إذا كنت بحاجة إلى استخدام وظيفة Glibc فقط لتحويل الترميز، فأنا بخير مع ذلك.

هل كانت مفيدة؟

المحلول

كما هو موضح في الرابط الذي قدمته، يمكن أن تحدث كتل البيانات الوصفية التالية بين علامة "FLAC" وحظر البيانات الوصفية Vorbis_comment.

  • Streaminfo: هذه الكتلة لديها معلومات حول الدفق بأكمله، مثل معدل العينة، عدد القنوات، إجمالي عدد العينات، إلخ. يجب أن يكون موجودا كوحدة بيانات التعريف الأول في الدفق. قد تتبع كتل البيانات الوصفية الأخرى، وتلك التي لا يفهمها وحدة فك الترميز، وسوف تخطي.
  • التطبيق: هذه الكتلة للاستخدام حسب تطبيقات الطرف الثالث. الحقل الإلزامي الوحيد هو معرف 32 بت. يتم منح هذا المعرف عند الطلب إلى تطبيق من قبل المشرفين FLAC. ما تبقى من الكتلة محددة من قبل التطبيق المسجل. قم بزيارة صفحة التسجيل إذا كنت ترغب في تسجيل معرف للتطبيق الخاص بك مع FLAC.
  • الحشو: تسمح هذه الكتلة بمبلغ تعسفي من الحشو. محتويات كتلة الحشو ليس لها معنى. هذه الكتلة مفيدة عندما تكون معروفة بأن البيانات الوصفية سيتم تحريرها بعد الترميز؛ يمكن للمستخدم تعليمات الترميز لحجز كتلة الحشو من الحجم الكافي بحيث يتم إضافة بيانات التعريف، فسيطر ببساطة على الحشو (وهو سريع نسبيا) بدلا من الاضطرار إلى إدراجها في المكان المناسب في الملف الموجود (الذي من شأنه تتطلب عادة إعادة كتابة الملف بأكمله).
  • الطائفة: هذه كتلة اختيارية لتخزين نقاط البحث. من الممكن البحث عن أي عينة معينة في مجرى FLAC دون طاولة ساعد، ولكن قد يكون التأخير غير متوقع لأن معدل البت قد يختلفه على نطاق واسع داخل دفق. بإضافة نقاط البحث إلى دفق، يمكن تقليل هذا التأخير بشكل كبير. يستغرق كل نقطة بحث 18 بايت، لذلك يضيف دقة 1٪ داخل دفق أقل من 2K. يمكن أن يكون هناك واحد فقط يسجل في مجرى، ولكن يمكن أن يكون للجدول أي عدد من النقاط البحثية. هناك أيضا نقطة تسهيل خاص "عنصر نائب" والتي سيتم تجاهلها من قبل أجهزة فك التشفير ولكن يمكن استخدامها لتحريك مساحة لإدراج نقاط البحث في المستقبل.

فقط بعد الوصف أعلاه، هناك أيضا مواصفات تنسيق كل من تلك الكتل. الرابط يقول أيضا

جميع الأرقام المستخدمة في Bitstream Flac هي أعداد صحيحة؛ لا توجد تمثيلات من النقطة العائمة. جميع الأرقام هي مرمومة الإناث. جميع الأرقام غير موقعة ما لم ينص على خلاف ذلك.

إذن، ما الذي تفتقده؟ قول انت

أريد نهجا غير اختراع لقراءة ملفات OGG.

لماذا إعادة كتابة مكتبة للقيام بذلك عندما تكون موجودة بالفعل؟

نصائح أخرى

يتم توثيق تنسيق ملف OGG هنا. وبعد هناك تصور رسومية لطيفة جدا كما طلبت مع وصف مكتوب مفصل.

قد ترغب أيضا في النظر في libogg. وهي مكتبة مرخصة من BSD مفتوحة المصدر لقراءة وكتابة ملفات OGG.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top