FLAC هو برنامج مفتوح المصدر يمكنه تقليل مقدار مساحة التخزين اللازمة لتخزين الإشارات الصوتية الرقمية دون الحاجة إلى إزالة المعلومات أثناء القيام بذلك.
تسمى الملفات التي يقرأها وينتجها هذا البرنامج ملفات FLAC. نظرًا لأن هذه الملفات (التي تتبع تنسيق FLAC) يمكن قراءتها وكتابتها بواسطة برامج أخرى أيضًا، غالبًا ما يشار إلى هذا البرنامج باسم تطبيق FLAC المرجعي.
تم تطوير FLAC بواسطة متطوعين. إذا كنت تريد المساعدة، راجع CONTRIBUTING.md لمزيد من المعلومات.
يتكون FLAC من
flac
، برنامج سطر أوامر لتشفير وفك تشفير الملفاتmetaflac
، برنامج سطر أوامر لعرض وتحرير بيانات تعريف FLACالمكتبات (libFLAC، libFLAC++) مرخصة بموجب ترخيص Xiph.org المشابه لـ BSD (انظر COPYING.Xiph). جميع البرامج والمكونات الإضافية الأخرى مرخصة بموجب ترخيص GNU العام (انظر COPYING.GPL). تم ترخيص الوثائق بموجب رخصة التوثيق الحر GNU (انظر COPYING.FDL).
للحصول على توثيق لأدوات سطر الأوامر flac
و metaflac
، راجع دليل man الذي يحتوي على الملفات flac.md وmetaflac.md
وثائق واجهة برمجة التطبيقات (API) موجودة بتنسيق html ويتم إنشاؤها بواسطة Doxygen. يمكن العثور عليه في الدليل doc/html/api. يتم تضمينه في إصدار tarball ويجب أن يتم إنشاؤه باستخدام Doxygen عندما يتم أخذ المصدر مباشرة من git.
تحتوي أمثلة الدليل على مثال للتعليمات البرمجية المصدرية حول استخدام libFLAC وlibFLAC++.
تم تضمين الوثائق المتعلقة بتنسيق FLAC نفسه (والتي يمكن استخدامها لإنشاء برامج قراءة وكتابة برامج FLAC بشكل مستقل عن libFLAC) في الإصدارات السابقة، ولكن يمكن العثور عليها الآن على https://datatracker.ietf.org/doc/draft-ietf -cellar-flac/ بالإضافة إلى ذلك، يمكن العثور على مجموعة من الملفات لاختبار المطابقة تسمى منصة اختبار وحدة فك ترميز FLAC على https://github.com/ietf-wg-cellar/flac-test-files
إذا كانت لديك أسئلة حول FLAC ولم يجيب عليها هذا المستند، فيرجى إرسالها إلى المتتبع التالي حتى يمكن تحسين هذا المستند:
https://github.com/xiph/flac/issues
يمكن إنشاء جميع مكونات مشروع FLAC باستخدام مجموعة متنوعة من المترجمين (بما في ذلك GB وClang وVisual Studio وIntel C++ Compiler) على العديد من البنيات (بما في ذلك x86 وx86_64 وARMv7 وARMv8 وPowerPC) للعديد من أنظمة التشغيل المختلفة.
وللقيام بذلك، توفر FLAC نظامي بناء: أحدهما يستخدم أدوات GNU التلقائية والآخر يستخدم CMake. يختلف كلاهما قليلاً في خيارات التكوين، لكن يجب اعتبارهما متساويين في معظم حالات الاستخدام.
يستخدم FLAC لتوفير ملفات مخصصة للإنشاء باستخدام Visual Studio، ولكن تمت إزالتها لصالح استخدام CMake.
CMake هو نظام بناء متعدد المنصات. يمكن إنشاء FLAC على أنظمة التشغيل Windows وLinux وMac OS X باستخدام CMake.
يمكنك استخدام إما CLI أو واجهة المستخدم الرسومية الخاصة بـ CMake. ننصحك بأن يكون لديك مجلد بناء منفصل خارج المستودع حتى لا تفسده بالملفات التي تم إنشاؤها. ومع ذلك، فمن الممكن إجراء ما يسمى بالبناء داخل الشجرة، وفي هذه الحالة يكون /path/to/flac-build في الأمثلة التالية مساويًا لـ /path/to/flac-source.
انتقل إلى مجلد البناء الخاص بك وقم بتشغيل شيء مثل هذا:
/path/to/flac-build$ cmake /path/to/flac-source
أو على سبيل المثال في Windows Shell
C:pathtoflac-build> cmake pathtoflac-source
(بشرط أن يكون cmake موجودًا في متغير %PATH% الخاص بك)
سيؤدي ذلك إلى إنشاء برامج نصية للبناء لنظام البناء الافتراضي (على سبيل المثال Makefiles لنظام UNIX). بعد ذلك تبدأ في الإنشاء باستخدام أمر مثل هذا:
/path/to/flac-build$ make
وبعد ذلك يمكنك إجراء الاختبارات أو تثبيت المكتبات والرؤوس المبنية
/path/to/flac-build$ make test
/path/to/flac-build$ make install
إذا كنت تريد استخدام نظام إنشاء غير الافتراضي، قم بإضافة علامة -G إلى cmake، على سبيل المثال:
/path/to/flac-build$ cmake /path/to/flac-source -GNinja
/path/to/flac-build$ ninja
أو:
/path/to/flac-build$ cmake /path/to/flac-source -GXcode
استخدم cmake --help لرؤية قائمة المولدات المتاحة.
افتراضيًا، سيبحث CMake عن OGG. إذا فشل CMake في العثور عليه، فيمكنك مساعدة CMake عن طريق تحديد المسار الدقيق:
/path/to/flac-build$ cmake /path/to/flac-source -DOGG_ROOT=/path/to/ogg
إذا كنت ترغب في أن يقوم CMake ببناء OGG إلى جانب FLAC، فيمكنك وضع مصادر ogg مباشرة في دليل مصدر flac كدليل فرعي بالاسم ogg، على سبيل المثال:
/path/to/flac-source/ogg
إذا كنت لا ترغب في إنشاء flac بدعم OGG، فيمكنك إخبار CMake بعدم البحث عن OGG:
/path/to/flac-build$ cmake /path/to/flac-source -DWITH_OGG=OFF
يمكن أيضًا وضع خيارات FLAC الأخرى (مثل إنشاء C++ lib أو docs) من خلال العلامة -D. إذا كنت تريد معرفة الخيارات المتاحة، استخدم -LH:
/path/to/flac-build$ cmake /path/to/flac-source -LH
من المحتمل أنك تفضل استخدام واجهة المستخدم الرسومية CMake إذا كنت تستخدم Visual Studio لإنشاء FLAC. إنها في جوهرها نفس عملية البناء باستخدام CLI.
افتح cmake-gui. في النافذة، حدد الدليل المصدر (جذر المستودع)، ودليل البناء (دليل آخر خارج المستودع). ثم اضغط على زر "تكوين". سوف يسألك CMake عن نظام البناء الذي تفضله. اختر إصدار Visual Studio الموجود على نظامك، واختر ما إذا كنت تريد الإنشاء لـ Win32 أو x64. اضغط موافق.
بعد انتهاء CMake، يمكنك تغيير التكوين حسب رغبتك وإذا قمت بتغيير أي شيء، قم بتشغيل Configure مرة أخرى. باستخدام الزر "إنشاء"، يقوم CMake بإنشاء ملفات Visual Studio، والتي يمكن فتحها من Visual Studio. باستخدام الزر "فتح المشروع"، سيقوم CMake بتشغيل Visual Studio وفتح الحل الذي تم إنشاؤه. يمكنك استخدام ملفات المشروع كالمعتاد ولكن تذكر أنه تم إنشاؤها بواسطة CMake. وهذا يعني أن تغييراتك (على سبيل المثال، بعض إشارات الترجمة الإضافية) ستفقد عند تشغيل CMake في المرة القادمة.
يبحث CMake بشكل افتراضي عن OGG على نظامك ويعرض خطأ إذا لم يتمكن من العثور عليه. إذا كنت تريد إنشاء OGG إلى جانب FLAC، فيمكنك تنزيل مصادر OGG واستخراجها في دليل فرعي لدليل مصدر FLAC بالاسم ogg (أي /path/to/flac-source/ogg) قبل تشغيل CMake. إذا كنت لا ترغب في إنشاء FLAC بدعم OGG، فقم بإلغاء تحديد المربع الذي يتبع علامة NOT_OGG في قائمة المتغيرات في نافذة cmake-gui وقم بتشغيل "التكوين" مرة أخرى.
إذا فشل CMake في العثور على مترجم MSVC، فمن المفترض أن يساعد تشغيل cmake-gui من موجه comand لـ MS Developer.
يستخدم FLAC autoconf و libtool للتكوين والبناء. لتكوين بناء، افتح سطر الأوامر/المحطة الطرفية وقم بتشغيل ./configure
يمكنك توفير خيارات لهذا الأمر، والتي يتم إدراجها عن طريق تشغيل ./configure --help
.
في حالة عدم وجود البرنامج النصي للتكوين (على سبيل المثال عند البناء من git وليس من إصدار tarball)، فيمكن إنشاؤه عن طريق تشغيل ./autogen.sh
. قد يتطلب هذا حزمة تطوير libtool بالرغم من ذلك.
بعد التكوين، قم بالإنشاء باستخدام make
، وتحقق من البناء باستخدام make check
، ثم قم بالتثبيت باستخدام make install
. قد يتطلب التثبيت امتيازات المسؤول، على سبيل المثال sudo make install
.
تعتبر خطوة "إجراء الفحص" اختيارية؛ احذفه لتخطي جميع الاختبارات، والتي قد تستغرق حوالي ساعة لإكمالها. على الرغم من أنها ستتوقف برسالة صريحة حول أي فشل، إلا أنها تطبع الكثير من الأشياء، لذا قد ترغب في التقاط الإخراج إلى ملف إذا كنت تواجه مشكلة. أيضًا، لا تقم بتشغيل "إجراء التحقق" كجذر لأنه يربك بعض الاختبارات.
تلخيص:
./configure
make && make check
sudo make install
لقد نما libFLAC بشكل أكبر بمرور الوقت حيث تم تضمين المزيد من الوظائف، ولكن قد يكون الكثير منها غير ضروري لتطبيق مضمن معين. قد يتم تقليم الأجزاء غير المستخدمة عن طريق بعض عمليات التحرير البسيطة لـconfig.ac وsrc/libFLAC/Makefile.am؛ يوضح الرسم البياني التالي للتبعية الوحدات التي يمكن تقليمها دون تقسيم الأمور بشكل أكبر:
metadata.h
stream_decoder.h
format.h
stream_encoder.h
stream_decoder.h
format.h
stream_decoder.h
format.h
بمعنى آخر، بالنسبة لتطبيقات فك التشفير الخالصة، يمكن إزالة كل من واجهة تشفير الدفق وتحرير البيانات الوصفية بأمان. لاحظ أن هذا خاص ببناء المكتبات للاستخدام المضمن. لا توفر أدوات سطر الأوامر مثل هذا التقسيم، وتتطلب إنشاء libFLAC كاملًا لتعمل.
يوجد قسم مخصص للاستخدام المضمن في وثائق HTML الخاصة بـ libFLAC API (راجع doc/html/api/index.html).
أيضًا، هناك عدة أماكن في كود libFLAC مع التعليقات المميزة بـ "OPT:" حيث يمكن تغيير #define لتمكين التعليمات البرمجية التي قد تكون أسرع على نظام أساسي معين. تجربة هذه يمكن أن تؤدي إلى ثنائيات أسرع.