فلاك

فلاك (بالإنجليزية: FLAC، اختصار لعبارة Free Lossless Audio Codec أي «ترميز الصوت الحر غير المنقوص») هو صيغة ترميز صوتي لضغط عديم الخسارة لالصوت الرقمي، طورته مؤسسة Xiph.Org. وهو أيضًا اسم مشروع برمجيات حرة ينتج أدوات فلاك، وهي حزمة برامج مرجعية تتضمن تطبيق ترميز. يمكن عادةً تقليل حجم الصوت الرقمي المضغوط بواسطة خوارزمية فلاك إلى ما بين 50 و70 بالمائة من حجمه الأصلي، ويفك ضغطه إلى نسخة مطابقة لبيانات الصوت الأصلية.

فلاك هو صيغة مفتوحة بدون حقوق ملكية وتطبيق مرجعي وهو من البرمجيات الحرة. يدعم فلاك إضافة بيانات وصفية، وصور أغلفة الألبومات، والبحث السريع.

 التاريخ 
بدأ جوش كولسون تطوير فلاك في عام 2000. وتم تجميد تيار البتات مع إصدار الإصدار 0.9 من التطبيق المرجعي في 31 مارس 2001. صدر الإصدار 1.0 في 20 يوليو 2001.

في 29 يناير 2003، أعلنت مؤسسة Xiph.Org ومشروع فلاك عن دمج فلاك تحت مظلة Xiph.org. تضم Xiph.org صيغ ضغط حرة أخرى مثل فوربس، وثيورا، وسبيكس، وأوبوس.

صدر الإصدار 1.3.0 في 26 مايو 2013، ونُقل التطوير حينها إلى مستودع جيت الخاص بـ Xiph.org.

في عام 2019، اقتُرح فلاك كمعيار لـ IETF.

في ديسمبر 2024، حُدد فلاك رسميًا ونشر بصفته كـ RFC 9639 .

 التصميم 
فلاك هو ترميز عديم الخسارة لبيانات تضمين شفرة النبضة الخطية.

 بنية الملف 
يتكون ملف فلاك من العدد السحري fLaC، وبيانات وصفية، وصوت مرمّز.

يُقسم الصوت المرمز إلى إطارات، يتكون كل منها من رأس، وكتلة بيانات، ومجموع اختباري CRC16. يُرمز كل إطار بشكل مستقل عن الآخر. يبدأ رأس الإطار بكلمة متزامنة، تُستخدم لتحديد بداية إطار صالح. يحتوي باقي الرأس على عدد العينات، وموضع الإطار، وتخصيص القناة، واختياريًا معدل العينات وعمق البت. تحتوي كتلة البيانات على معلومات الصوت.

تسبق البيانات الوصفية الصوت في فلاك. توجد خصائص مثل معدل العينات وعدد القنوات دائمًا في البيانات الوصفية. قد تحتوي أيضًا على معلومات أخرى، مثل غلاف الألبوم.

 الترميز وفك الترميز 
تصغير|250x250px|لقطة شاشة لبرنامج سطر الأوامر flac
تتكون خوارزمية ترميز فلاك من مراحل متعددة. في المرحلة الأولى، يُقسم الصوت المدخل إلى كتل. إذا كان الصوت يحتوي على قنوات متعددة (مثل الستريو)، تُرمز كل قناة على حدة ككتلة فرعية. ثم يحاول المرمز إيجاد تقريب رياضي جيد للكتلة، إما عن طريق مطابقة متعدد حدود بسيط، أو من خلال الترميز التنبؤي الخطي العام. ثم يُكتب وصف للتقريب، والذي لا يتجاوز بضع بايتات في الطول. أخيرًا، يُرمز الفرق بين التقريب والمدخل، والذي يسمى الباقي، باستخدام ترميز رايس. في كثير من الحالات، يحتل وصف التقريب والباقي المرمز مساحة أقل من استخدام تضمين شفرة النبضة.

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

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

على الرغم من أن المرمز المرجعي يستخدم حجم كتلة واحدًا للتدفق بأكمله،

 الضغط 
تُحدد كمية الضغط بواسطة معلمات مختلفة، بما في ذلك ترتيب نموذج التنبؤ الخطي وحجم الكتلة. بغض النظر عن كمية الضغط، يمكن دائمًا إعادة بناء البيانات الأصلية بشكل مثالي.

لتسهيل الأمر على المستخدم، يحدد التطبيق المرجعي 9 مستويات ضغط، وهي إعدادات مسبقة للمعلمات التقنية الأكثر تعقيدًا لخوارزمية الترميز. تُسمى المستويات من 0 إلى 8، حيث تؤدي الأرقام الأعلى إلى نسبة ضغط أعلى، على حساب سرعة الضغط. يختلف معنى كل مستوى ضغط باختلاف التطبيق.

أُصلح فلاك لسرعة فك الضغط على حساب سرعة الترميز. أظهر اختبار أداء أنه بينما يوجد تباين قليل في سرعة فك الضغط مع زيادة مستوى الضغط، فإن عملية الترميز تستغرق وقتًا أطول بكثير بعد مستوى الضغط الافتراضي 5، مع توفير مساحة قليلة مقارنة بالمستوى 5.

 التنفيذ 
إلى جانب التنسيق، يحتوي مشروع فلاك أيضًا على تطبيق مرجعي مفتوح المصدر لفلاك يسمى libFLAC. يحتوي libFLAC على وظائف لترميز وفك ترميز بيانات فلاك ومعالجة البيانات الوصفية لملفات فلاك. يُعد libFLAC++، وهو غلاف كائني التوجه حول libFLAC لـ سي++، وبرنامجي سطر الأوامر flac وmetaflac، أيضًا جزءًا من التطبيق المرجعي.

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

 مقارنة بالتنسيقات الأخرى 
صُمم فلاك خصيصًا لتعبئة بيانات الصوت بكفاءة، على عكس الخوارزميات العامة عديمة الخسارة مثل DEFLATE، المستخدمة في ZIP وgzip. بينما قد يقلل ZIP حجم ملف صوتي بجودة القرص المضغوط بنسبة 10-20%، فإن فلاك قادر على تقليل حجم بيانات الصوت بنسبة 40-50% من خلال الاستفادة من خصائص الصوت.

تكمن نقاط القوة التقنية في فلاك مقارنة بالتنسيقات الأخرى عديمة الخسارة في قدرته على البث وفك الترميز بسرعة، بغض النظر عن مستوى الضغط.

نظرًا لأن فلاك هو نظام عديم الخسارة، فهو مناسب كصيغة أرشيفية لأصحاب الأقراص المدمجة والوسائط الأخرى الذين يرغبون في الحفاظ على مجموعاتهم الصوتية. إذا فقدت الوسائط الأصلية أو تضررت أو اهترأت، فإن نسخة فلاك من المسارات الصوتية تضمن إمكانية استعادة نسخة طبق الأصل من البيانات الأصلية في أي وقت. أما استعادة دقيقة من نسخة ضائعة (مثل إم بي 3) من نفس البيانات فهي مستحيلة. كون فلاك عديم الخسارة يعني أنه مناسب جدًا لالترميز التبادلي، على سبيل المثال إلى MP3، دون فقدان جودة الترميز التبادلي الذي يرتبط عادةً بين صيغة ضائعة وأخرى. يمكن إنشاء ملف CUE اختياريًا عند النسخ من قرص مضغوط. إذا قُرئ القرص المضغوط ونُسخ بشكل مثالي إلى ملفات فلاك، يسمح ملف CUE لاحقًا بنسخ قرص صوتي مطابق في البيانات الصوتية للقرص المضغوط الأصلي، بما في ذلك ترتيب المسارات وفجوة مسبقة، باستثناء البيانات الإضافية مثل كلمات الأغاني ورسومات CD+G. ولكن اعتمادًا على برنامج النسخ المستخدم، يمكن استعادة  من البيانات الوصفية المخزنة في ورقة CUE ونسخها مرة أخرى إلى نسخة جديدة على وسائط CD-R فارغة.

 التبني والتطبيقات 

 التطبيق المرجعي 
يُطبق التطبيق المرجعي لفلاك كمكتبة ترميز وفك ترميز أساسية تسمى libFLAC، مع كون البرنامج الرئيسي القابل للتوزيع flac هو التطبيق المرجعي لواجهة برمجة تطبيقات libFLAC. هذه الواجهة متاحة أيضًا في C++ باسم libFLAC++. يجمع التطبيق المرجعي لفلاك على العديد من المنصات، بما في ذلك معظم أنظمة تشغيل يونكس (مثل سولاريس، وبي إس دي) وشبيه يونكس (بما في ذلك لينكس)، وويندوز، وبي أو إس، وأو إس/2. توجد أنظمة بناء لـ autoconf/automake، وMSVC، وWatcom C، وإكس كود. لا يوجد حاليًا دعم متعدد النوى في libFLAC، ولكن يمكن استخدام أدوات مساعدة مثل جنو باراليل والعديد من الواجهات الرسومية لإنشاء عدة نسخ من المرمز.

 الأجهزة والبرامج 
دعم تشغيل فلاك في أجهزة الصوت المحمولة وأنظمة الصوت المخصصة محدود مقارنة بتنسيقات مثل MP3 أو PCM غير المضغوط. يتضمن دعم فلاك افتراضيًا في ويندوز 10، أندرويد، ماك أو إس وآي أو إس.

+ دعم فلاك من قبل أنظمة التشغيل المختلفة مايكروسوفت ويندوز ماك أو إس أندرويد آي أو إس دعم الترميز        دعم الحاوية FLAC (.flac) 
ماتروشكا (.mka, .mkv) 
 أوغ (.oga) FLAC (.flac) 
Core Audio Format (.caf) FLAC (.flac) FLAC (.flac) 
Core Audio Format (.caf) ملاحظاتأُضيف الدعم في ويندوز 10.

يدعم ويندوز ميديا بلاير (2022) أيضًا فلاك في حاوية أوغ للبث المباشر (مثل آيس كاست راديو الإنترنت).

أُضيف الدعم في أندرويد 3.1.

 يدعم أندرويد بشكل طبيعي فلاك العادي (.flac)، ولكن ليس أوغ فلاك (.oga). ومع ذلك، أُضيف دعم كل من فلاك العادي وأوغ فلاك لاحقًا إلى مدير الملفات Files.
 الاستخدام في الأرشيف 
كانت عملية توحيد صيغة فلاك في RFC 9639 مدفوعة بحالة الاستخدام المحددة للأرشفة والحفظ في الاعتبار. أدرجت إدارة الأرشيف والوثائق الوطنية للولايات المتحدة فلاك كصيغة مفضلة للصوت الرقمي.

 المراجع 

 روابط خارجية 


 مقارنة صيغ الصوت غير المنقوصة: قياس فلاك مقابل خمس صيغ صوتية أخرى غير منقوصة
 مقارنة غير منقوصة: فلاك مقابل سبع صيغ صوتية أخرى غير منقوصة على Hydrogenaudio
 أداة البحث عن الهواتف GSMArena: جميع الهواتف والأجهزة اللوحية التي تدعم فلاك

تصنيف:برمجيات 2001
تصنيف:برمجيات متعددة المنصات
تصنيف:تنسيقات مفتوحة