Libsndfile هي مكتبة C لقراءة الملفات التي تحتوي على بيانات الصوت التي تم أخذ عينات منها.
تم تطوير مشروع Libsndfile وصيانته في الأصل بواسطة Erik de Castro lopo [email protected] المعروف أيضًا باسم @erikd. تم تطوير المشروع على github على https://github.com/erikd/libsndfile.
بعد إصدار الإصدار 1.0.30 ، قام ERIKD بنقل المشروع إلى فريق Libsndfile ، انظر المؤلفين للحصول على التفاصيل.
يوجد مستودع رمز المصدر الكنسي لـ libsndfile في https://github.com/libsndfile/libsndfile.
يمكنك الحصول على الكود المصدري باستخدام:
git clone https://github.com/libsndfile/libsndfile.git
لبناء Android ، انظر Buildingforandroid.
يوجد حاليًا نظامين للبناء: نظام إنشاء CMAKE التقليدي القائم على GNU ونظام بناء CMAKE الحديث. تم توثيق استخدام نظام إنشاء CMAKE أدناه.
يعد إعداد بيئة بناء لـ libsndfile على Debian أو Ubuntu بسيطًا مثل:
sudo apt install autoconf autogen automake build-essential libasound2-dev
libflac-dev libogg-dev libtool libvorbis-dev libopus-dev libmp3lame-dev
libmpg123-dev pkg-config python
بالنسبة لتوزيعات Linux الأخرى أو أي من BSDs *، يجب أن يكون الإعداد متشابهًا على الرغم من أن أدوات تثبيت الحزمة وأسماء الحزم قد تكون مختلفة قليلاً.
وبالمثل على نظام التشغيل Mac OS X ، على افتراض أن Brew مثبت بالفعل:
brew install autoconf autogen automake flac libogg libtool libvorbis opus mpg123 pkg-config
بمجرد إنشاء بيئة البناء ، يكون البناء واختبار libsndfile بسيطًا مثل:
autoreconf -vif
./configure --enable-werror
make
make check
على الرغم من أن AutoTools هي أدوات البناء الأساسية والموصى بها ، إلا أن Cmake Meta Build Generator متاح أيضًا. تتم عملية الإنشاء مع CMake على مرحلتين. أولاً ، يتم إنشاء ملفات الإنشاء القياسية من البرامج النصية للتكوين. ثم يتم استخدام أدوات البناء الأصلية للمنصة للمبنى الفعلي. يمكن لـ CMake إنتاج ملفات Microsoft Visual Studio وملفات الحلول ، و Unix Makefiles ، ومشاريع Xcode وغيرها الكثير.
تدعم بعض IDE CMake أصليًا أو مع الإضافات ، تحقق من وثائق IDE للحصول على التفاصيل.
هناك بعض الحزم الموصى بها لتمكين جميع ميزات libsndfile:
يمكن لـ CMake التعامل مع عمليات الإنشاء خارج المكان ، مما يتيح عدة عمليات من شجرة المصدر نفسها ، والمجمع المتبادل. تعد القدرة على إنشاء شجرة دليل خارج شجرة المصدر ميزة رئيسية ، مما يضمن أنه في حالة إزالة دليل البناء ، تظل الملفات المصدر غير متأثرة.
mkdir CMakeBuild
cd CMakeBuild
ثم قم بتشغيل أمر cmake مع الدليل حيث يوجد نص cmakelists.txt كوسيطة (يتم دعم المسارات النسبية):
cmake ..
سيقوم هذا الأمر بتكوين واكتب البرنامج النصي أو الحل إلى دليل CmakeBuild. Cmake ذكي بما يكفي لإنشاء Makefiles Unix تحت حل Linux أو Visual Studio إذا كان لديك Visual Studio مثبتة ، ولكن يمكنك تكوين المولد مع معلمة سطر الأوامر -G :
cmake .. -G"Unix Makefiles"
يعتمد إجراء الإنشاء على المولد المحدد. مع "Unix Makefiles" يمكنك الكتابة:
make & make install
باستخدام "Visual Studio" وبعض المولدات الأخرى ، يمكنك فتح الحل أو المشروع من دليل CMakeBuild والبناء باستخدام IDE.
أخيرًا ، يمكنك استخدام الأمر الموحد:
cmake --build .
يوفر Cmake أيضًا واجهة المستخدم الرسومية عبر الأساس ، Cmake-Gui. استخدامه تافهة ولا يتطلب تفسيرات مفصلة.
يمكنك تمرير خيارات إضافية باستخدام /D<parameter>=<value> عند تشغيل أمر cmake . بعض خيارات النظام المفيدة:
CMAKE_C_FLAGS - أعلام برنامج التحويل البرمجي C إضافيCMAKE_BUILD_TYPE - نوع التكوين ، DEBUG ، RELEASE ، RELWITHDEBINFO أو MINSIZEREL . DEBUG هو الافتراضيCMAKE_INSTALL_PREFIX -إنشاء موقع تثبيت ، وهو نفس خيار --prefix configure البرنامج النصيخيارات libsndfile مفيدة:
BUILD_SHARED_LIBS - قم ببناء مكتبة مشتركة (DLL ضمن Windows) عند ON مكتبة ثابتة خلاف ذلك. هذا الخيار موقف OFF .
BUILD_PROGRAMS - إنشاء أدوات Libsndfile من programs/ الدليل ، بشكل ON .
BUILD_EXAMPLES - بناء أمثلة ، بشكل ON .
BUILD_TESTING - بناء اختبارات. ثم يمكنك إجراء اختبارات باستخدام أمر ctest ، بشكل ON . تعيين BUILD_SHARED_LIBS إلى ON تعطيل هذا الخيار.
ENABLE_EXTERNAL_LIBS - تمكين OGG و Vorbis و FLAC و OPUS. يتوفر هذا الخيار ON إذا تم العثور على جميع مكتبات التبعية.
ENABLE_MPEG - دعم mp3. يتوفر هذا الخيار ON إذا تم العثور على جميع مكتبات التبعية.
ENABLE_BOW_DOCS تمكين موضوع الوثائق السوداء على البيض ، OFF افتراضيًا.
ENABLE_EXPERIMENTAL - تمكين الكود التجريبي. لا تستخدمه إذا لم تكن متأكدًا. هذا الخيار موقف OFF .
ENABLE_CPACK - تمكين دعم cpack. هذا الخيار ON بشكل افتراضي.
ENABLE_PACKAGE_CONFIG - قم بإنشاء ملف تكوين الحزمة وتثبيته.
INSTALL_PKGCONFIG_MODULE - قم بإنشاء وتثبيت وحدة PKG -Config.
INSTALL_MANPAGES - تثبيت صفحات الرجل للبرامج. هذا الخيار ON افتراضيًا
ENABLE_STATIC_RUNTIME - تمكين وقت التشغيل الثابت على منصة Windows (MSVC و MINGW) ، OFF افتراضيًا.
ملاحظة : بالنسبة إلى برنامج التحويل البرمجي MSVC ، يتم إهمال هذا الخيار لـ CMake> = 3.15 ، انظر السياسة CMP0091. استخدم خيار CMAKE_MSVC_RUNTIME_LIBRARY بدلاً من ذلك.
ملاحظة : بالنسبة إلى Mingw Toolchain هذا الخيار هو تجريبي. إذا قمت بتمكينه ثم تعطيل مرة أخرى ، فأنت بحاجة إلى مسح ذاكرة التخزين المؤقت CMAKE (حذف cmakeCache.txt).
ENABLE_COMPATIBLE_LIBSNDFILE_NAME - اضبط اسم DLL على libsndfile-1.dll (الاسم الكنسي) على منصة Windows ، sndfile.dll خلاف ذلك ، OFF الافتراضي. يمكن أن يكون اسم المكتبة مختلفًا اعتمادًا على النظام الأساسي. اسم DLL المعروف على منصة Windows هو libsndfile-1.dll ، لأن الطريقة الوحيدة لبناء مكتبة Windows من قبل هي Mingw Toolchain مع Autotools. هذا الاسم هو الأصلي للنظام الإيكولوجي لـ MingW ، يقوم Autotools بإنشاءه باستخدام قواعد منصة MingW من sndfile Target. ولكن عندما تبني مع CMake باستخدام برنامج التحويل البرمجي الأصلي ، فإن الاسم هو sndfile.dll . هذا هو اسم منصة Windows الأصلية ، لأن Windows لا يوجد لديه قواعد تسمية المكتبة. يُفضل ذلك لأنه يمكنك البحث عن مكتبة باستخدام أمر Package Manager أو Cmake's find_library على أي منصة باستخدام نفس اسم sndfile .
ENABLE_SSE2 - إضافة علامة التحويل البرمجي لتمكين SSE2 إذا لزم الأمر ، بشكل ON .
هذا الخيار مخصص لتكوينات المترجمين المتوافقة مع GCC فقط.
إذا قمت بتجميع مجموعة SIMD الأخرى ، مثل AVX2 ، فقد ترغب في تعيين ENABLE_SSE2 إلى OFF .
ملاحظة : هذا الخيار غير نشط لتكوين X64 ، لأن SSE2 متاح دائمًا في هذا الوضع ويتم تمكين جميع التحسينات افتراضيًا.
الخيارات التي تم إهمالها:
DISABLE_EXTERNAL_LIBS - تعطيل دعم OGG و Vorbis و FLAC. تم استبداله بـ ENABLE_EXTERNAL_LIBSBUILD_STATIC_LIBS - بناء مكتبة ثابتة. استخدم BUILD_SHARED_LIBS بدلاً من ذلك تحتاج أولاً إلى إضافة ملفات FindOgg.cmake و FindVorbis.cmake و FindFLAC.cmake و FindOpus.cmake إلى بعض الدليل داخل مشروع Cmake الخاص بك (عادة cmake ) وإضافته إلى CMAKE_MODULE_PATH :
project(SomeApplication)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
الآن يمكنك البحث في مكتبة libsndfile من CMakeLists.txt مع هذا الأمر:
find_package(SndFile)
يتم تعيين SndFile_FOUND ON عند العثور على المكتبة.
إذا كانت التبعية libsndfile أمرًا بالغ الأهمية ، فيمكنك إضافة REQUIRED إلى find_package :
find_package(SndFile REQUIRED)
مع خيار find_package سوف ينهي عملية التكوين إذا لم يتم العثور على libsndfile .
يمكنك أيضًا إضافة فحص الإصدار:
find_package(SndFile 1.0.29)
سيتم find_package الإبلاغ عن خطأ ، إذا كان إصدار libsndfile <1.0.29.
يمكنك الجمع بين REQUIRED والنسخة إذا كنت بحاجة.
لربط مكتبة libsndfile استخدام:
target_link_libraries(my_application PRIVATE SndFile::sndfile)
النصيحة الأولى حول مكتبات Visual Studio System CRT ، وهي رمز النظام مرتبط كمكتبة ثابتة أو ديناميكية لكل تطبيق C.
يمكنك العثور على الخيار ذي الصلة في خصائص مشروع Visual Studio:
C/C++ -> Code Generation -> Runtime Library
الإصدار الديناميكي من مكتبة System CRT هو افتراضي ، وهذا يعني أن المستخدم النهائي يحتاج إلى تثبيت مكتبة وقت التشغيل نفسها على نظامه. على الأرجح ذلك ، ولكن إذا لم يكن الأمر كذلك ، فسيشاهد المستخدم رسالة الخطأ هذه باستخدام libsndfile dll:
"The program can't start because <crt-dll-name>.dll is missing from your computer. Try reinstalling the program to fix this problem. "
لتجنب ذلك ، قد ترغب في تمكين ربط مكتبة CRT الثابتة. في هذه الحالة ، سيزيد حجم DLL بشكل طفيف الحجم سيزداد قليلاً ، ولكن يمكنك إعادة توزيع DLL libsndfile دون الحاجة إلى تثبيت الإصدار الصحيح من مكتبة System CRT.
سيستخدم Cmake Project مكتبات CRT Dynamic System افتراضيًا ، تمامًا مثل Visual Studio. ولكن يمكنك تغييره باستخدام خيارات ENABLE_STATIC_RUNTIME أو CMAKE_MSVC_RUNTIME_LIBRARY .
ملاحظة : لا يمكنك استخدام كلا الخيارين في نفس الوقت ، وسيؤدي ذلك إلى خطأ في التكوين.
إذا كان لديك cmake> = 3.15 ، فيجب عليك استخدام خيار CMAKE_MSVC_RUNTIME_LIBRARY .
هذا سيمكن الربط الثابت:
cmake .. -D"MultiThreaded$<$<CONFIG:Debug>:Debug>"
يمكنك استخدام خيار libsndfile ENABLE_STATIC_RUNTIME للتحكم في ارتباط مكتبة CRT بمشروع CMake: OFF أو uniset (افتراضي) للديناميكية ، ON الثابت:
cmake .. -DENABLE_STATIC_RUNTIME=ON
ملاحظة : يتم إهمال هذا الخيار وقد تتم إزالته في المستقبل البعيد لأن لدينا خيار قياسي CMAKE_MSVC_RUNTIME_LIBRARY الآن.
النصيحة الثانية تدور حول OGG و Vorbis FLAC و SOPUS Support. البحث عن المكتبات الخارجية تحت Windows أمر صعب بعض الشيء. أفضل طريقة هي استخدام VCPKG.
تثبيت VCPKG ثم أضف هذه المعلمة إلى سطر أوامر CMake:
-DCMAKE_TOOLCHAIN_FILE=<path-to-vcpkg>/scripts/buildsystems/vcpkg.cmake
تحتاج أيضًا إلى تعيين VCPKG_TARGET_TRIPLET إذا كنت تريد استخدام مكتبات ثابتة:
-DVCPKG_TARGET_TRIPLET=x64-windows-static
ثم تحتاج إلى تثبيت Libogg الثابت ، Libvorbis ، Libflac ، Libopus ، MPG123 و MP3LAME VCPKG.
بعد 1.1.0beta2 ، لا تحتاج إلى تثبيت التبعيات يدويًا. يدعم Libsndfile الآن وضع VCPKG المُظهر ويتم تثبيت جميع التبعيات تلقائيًا.
ومع ذلك ، يمكنك إيقاف تشغيل وضع البيان والعودة إلى الوضع الكلاسيكي باستخدام معلمة VCPKG_MANIFEST_MODE من سطر الأوامر:
-DVCPKG_MANIFEST_MODE=OFF
في الوضع الكلاسيكي ، تحتاج إلى تثبيت المكتبات المطلوبة يدويًا:
vcpkg install libvorbis:x64-windows-static libflac:x64-windows-static
opus:x64-windows-static mp3lame:x86-windows-static mpg123:x86-windows-static
libvorbis:x86-windows-static libflac:x86-windows-static
opus:x86-windows-static mp3lame:x86-windows-static mpg123:x86-windows-static
ملاحظة : يجب استخدام استخدام مكتبة CRT نفسها للمكتبات الخارجية ومكتبة Libsndfile نفسها. لـ *-static Tremlets يستخدم VCPKG CRT ثابت.
انظر المساهمة. md للحصول على التفاصيل.