الكاريوكي نظام موسيقي يشغّل مرافقة موسيقية مسجّلة لأغنية مشهورة، بينما يغني المؤدي الأغنية مباشرة، عادةً باتّباع الكلمات على شاشة فيديو. وتشير الكلمة أيضًا إلى عرض الكاريوكي نفسه.
تتكوّن الكلمة اليابانية من "kara" التي تعني "فارغ"، مع صيغة مختصرة من كلمة "أوركسترا". لذا فالمعنى الحرفي لكلمة كاريوكي هو "أوركسترا فارغة".
في تقرير البيانات الوصفية (metadata)، يكون لكاريوكي معنى أضيق بوصفه حقلاً محددًا. يأتي الاسم من ffprobe، قارئ الملفات في مشروع FFmpeg.
يعدّ FFmpeg كل جزء من الملف تدفقًا (stream) منفصلًا. يحصل كل تدفق على مجموعة من العلامات (flags) تسمى "disposition"، مثل Karaoke وAttached Pic. يعرّف توثيق FFmpeg هذه العلامة ببضع كلمات: التدفق يحتوي على صوت كاريوكي.
كيف تبدو القيم
خيار -show_streams في قارئ ffprobe يطبع هذه العلامة لكل تدفق، حتى في الملفات التي لا تحتوي على موسيقى. لهذه العلامة قيمتان في هذا الناتج:
0: العلامة معطّلة1: العلامة مفعّلة، وبالتالي يُعلَّم التدفق على أنه صوت كاريوكي
تعتمد الصيغة الدقيقة على نوع التقرير. تقرير JSON يعرض "karaoke": 0، وتقرير النص العادي يعرض DISPOSITION:karaoke=0.
ما هي الملفات التي تحمله
يقرأ FFmpeg هذه العلامة ويكتبها في بعض الصيغ دون غيرها، كما توضّح الأمثلة التالية:
- NUT: يمكن أن يخزّن التدفق الكلمة
karaokeفي وسم (tag) يسمىDisposition - MKV: مواصفة Matroska تحتوي على علامات مثل default وforced وcommentary، ولكن لا توجد علامة karaoke
- MP4: لا تتضمن قائمة FFmpeg لأدوار مسارات MP4 إدخالًا للكارويوكي
- صوت AC-3 و E-AC-3: تحتوي البيانات الصوتية على نوع خدمة، وتمثّل إحدى القيم الكاريوكي
يحوّل FFmpeg نوع خدمة الكاريوكي إلى العلامة عندما يحتوي الصوت على قناتين أو أكثر، حتى في ملف MKV أو MP4. مع صيغ الصوت الأخرى، يبلّغ التدفق في ملف MKV أو MP4 عادةً عن 0، حتى لو كانت الأغنية نسخة كاريوكي.
تستخدم بعض أغاني الكاريوكي نوع ملفات خاصًا بها. تسجّل مكتبة الكونغرس الامتداد kar لملفات كاريوكي MIDI.
أين تُخزَّن كلمات الأغنية
لا تحتوي علامة Karaoke على كلمات، بل فقط الرقم 0 أو 1. لدى FFmpeg علامة منفصلة للكلمات (Lyrics) لتدفق يحتوي على كلمات الأغنية. أمّا النص نفسه فيوجد في موضع مختلف في كل صيغة:
- MP3: يحتفظ إطار ID3v2 المسمى USLT بـالكلمات دون معلومات توقيت، بينما يخزن الإطار SYLT طابعًا زمنيًا مع كل مقطع لفظي أو وحدة نصية
- MKV: يحتفظ الوسم
LYRICSبالكلمات عندما لا يُعرف التوقيت، أو كنسخة من مسار الترجمة (Subtitle)
من أين تأتي القيمة
يعيّن FFmpeg العلامات عند إنشاء كل تدفق، أو لاحقًا عند فحص التدفق. في ملف NUT يقرأ FFmpeg العلامات من الوسم Disposition. وفي صوت AC-3 يقرأ FFmpeg نوع الخدمة من البيانات الصوتية.
باستخدام خيار FFmpeg -disposition يمكنك تعيين العلامة بنفسك. بشكل افتراضي، ينسخ FFmpeg العلامات من تدفق الإدخال إلى تدفق الإخراج.
تصل العلامة التي يحتفظ بها الحاوي وحده إلى الملف الجديد فقط إذا كانت الصيغة الجديدة قادرة على تخزينها. لا يحتوي كاتب FFmpeg لصيغة MKV على كود لهذه العلامة.
لماذا هو مهم
يمكن أن يحتوي الملف على عدة تدفقات صوتية، ويمكن أن تميّز هذه العلامة أحدها على أنه صوت كاريوكي. في أوامر FFmpeg، يختار محدِّد التدفق disp:karaoke التدفقات التي تحتوي على هذه العلامة.
هذه العلامة مجرّد تصنيف، لذلك لا تثبت ما تسمعه بالفعل. فقيمة 0 لا تثبت أن الأغنية لا تملك نسخة كاريوكي أو لا تحتوي على كلمات.