الميزات - أمثلة - بناء - الوثائق - منصات مدعومة - ترخيص
تتم كتابة Miniaudio في C مع عدم وجود تبعيات باستثناء المكتبة القياسية ويجب أن تجمع نظيفة على جميع المترجمين الرئيسيين دون الحاجة إلى تثبيت أي حزم تطوير إضافية. يتم دعم جميع منصات سطح المكتب الرئيسية والهاتف.
ارجع إلى دليل البرمجة للحصول على وصف أكثر اكتمالا للميزات المتاحة في Miniaudio.
يوضح هذا المثال طريقة واحدة لتشغيل صوت باستخدام واجهة برمجة تطبيقات عالية المستوى.
#define MINIAUDIO_IMPLEMENTATION
#include "miniaudio.h"
#include <stdio.h>
int main ()
{
ma_result result ;
ma_engine engine ;
result = ma_engine_init ( NULL , & engine );
if ( result != MA_SUCCESS ) {
return -1 ;
}
ma_engine_play_sound ( & engine , "sound.wav" , NULL );
printf ( "Press Enter to quit..." );
getchar ();
ma_engine_uninit ( & engine );
return 0 ;
}يوضح هذا المثال كيفية فك تشفير الصوت وتشغيله باستخدام واجهة برمجة تطبيقات المستوى المنخفض.
#define MINIAUDIO_IMPLEMENTATION
#include "miniaudio.h"
#include <stdio.h>
void data_callback ( ma_device * pDevice , void * pOutput , const void * pInput , ma_uint32 frameCount )
{
ma_decoder * pDecoder = ( ma_decoder * ) pDevice -> pUserData ;
if ( pDecoder == NULL ) {
return ;
}
ma_decoder_read_pcm_frames ( pDecoder , pOutput , frameCount , NULL );
( void ) pInput ;
}
int main ( int argc , char * * argv )
{
ma_result result ;
ma_decoder decoder ;
ma_device_config deviceConfig ;
ma_device device ;
if ( argc < 2 ) {
printf ( "No input file.n" );
return -1 ;
}
result = ma_decoder_init_file ( argv [ 1 ], NULL , & decoder );
if ( result != MA_SUCCESS ) {
return -2 ;
}
deviceConfig = ma_device_config_init ( ma_device_type_playback );
deviceConfig . playback . format = decoder . outputFormat ;
deviceConfig . playback . channels = decoder . outputChannels ;
deviceConfig . sampleRate = decoder . outputSampleRate ;
deviceConfig . dataCallback = data_callback ;
deviceConfig . pUserData = & decoder ;
if ( ma_device_init ( NULL , & deviceConfig , & device ) != MA_SUCCESS ) {
printf ( "Failed to open playback device.n" );
ma_decoder_uninit ( & decoder );
return -3 ;
}
if ( ma_device_start ( & device ) != MA_SUCCESS ) {
printf ( "Failed to start playback device.n" );
ma_device_uninit ( & device );
ma_decoder_uninit ( & decoder );
return -4 ;
}
printf ( "Press Enter to quit..." );
getchar ();
ma_device_uninit ( & device );
ma_decoder_uninit ( & decoder );
return 0 ;
}يمكن العثور على المزيد من الأمثلة في مجلد الأمثلة أو عبر الإنترنت هنا: https://miniaud.io/docs/examples/
افعل ما يلي في ملف مصدر واحد:
#define MINIAUDIO_IMPLEMENTATION
#include "miniaudio.h" ثم فقط التجميع. ليست هناك حاجة لتثبيت أي تبعيات. على Windows و MacOS ، ليست هناك حاجة إلى الارتباط بأي شيء. على Linux فقط ارتباط بـ -lpthread ، -lm و -ldl . على BSD فقط ارتباط بـ -lpthread و -lm . على iOS ، تحتاج إلى تجميعها كـ COSTIVE-C.
إذا حصلت على أخطاء حول الإشارات غير المحددة إلى __sync_val_compare_and_swap_8 ، __atomic_load_8 ، إلخ ، فأنت بحاجة إلى الارتباط مع -latomic .
إذا كنت تفضل ملفات .H و .c منفصلة ، يمكنك العثور على نسخة منقسم من Miniaudio في مجلد الإضافات/miniaudio_split. من هنا ، يمكنك استخدام Miniaudio كمكتبة تقليدية .C و .h - فقط أضف miniaudio.c إلى شجرة المصدر الخاصة بك مثل أي ملف مصدر آخر وتضمين miniaudio.h مثل الرأس العادي. إذا كنت تفضل التجميع كوحدة ترجمة واحدة (AKA Unity Builds) ، يمكنك فقط #include ملف .c في ملف المصدر الرئيسي الخاص بك:
#include "miniaudio.c"لاحظ أن إصدار Split تم إنشاؤه تلقائيًا باستخدام أداة ويستند إلى الملف الرئيسي في دليل الجذر. إذا كنت ترغب في المساهمة ، فيرجى إجراء التغيير في الملف الرئيسي.
لا يتم ضمان توافق ABI بين الإصدارات ، لذا احرص على الترويج كـ DLL/SO. الطريقة المقترحة لدمج miniaudio هي إضافتها مباشرة إلى شجرة المصدر الخاصة بك.
يمكن العثور على الوثائق عبر الإنترنت هنا: https://miniaud.io/docs/
يمكن العثور على الوثائق أيضًا في الجزء العلوي من miniaudio.h الذي يعد دائمًا المصدر الأكثر حداثة والموثوقة للمعلومات حول كيفية استخدام miniaudio. يتم إنشاء جميع الوثائق الأخرى من هذه الوثائق داخل الرمز.
يجب أن يقوم Miniaudio بتجميع نظافة على منصات أخرى ، ولكنه لن يتضمن أي دعم للتشغيل أو التقاط الافتراضي. لدعم ذلك ، ستحتاج إلى تنفيذ الواجهة الخلفية المخصصة. يمكنك القيام بذلك دون الحاجة إلى تعديل رمز مصدر Miniaudio. انظر مثال custom_backend.
اختيارك من المجال العام أو معهد ماساتشوستس للتكنولوجيا لا إسناد.