Особенности - Примеры - Здание - Документация - поддерживаемые платформы - Лицензия
Miniaudio написан в C без зависимостей, кроме стандартной библиотеки, и должен чистить все основные компиляторы без необходимости установить какие -либо дополнительные пакеты разработки. Все основные настольные и мобильные платформы поддерживаются.
Обратитесь к руководству по программированию для более полного описания доступных функций в Miniaudio.
Этот пример показывает один способ воспроизведения звука, используя API высокого уровня.
#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 ;
}Этот пример показывает, как декодировать и воспроизводить звук, используя API низкого уровня.
#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 вам нужно компилировать как объектив-C.
Если вы получаете ошибки о неопределенных ссылках на __sync_val_compare_and_swap_8 , __atomic_load_8 и т. Д., Вам нужно связать с -latomic .
Если вы предпочитаете отдельные файлы .h и .c, вы можете найти разделенную версию Miniaudio в папке Extras/miniaudio_split. Отсюда вы можете использовать Miniaudio в качестве традиционной библиотеки .c и .h - просто добавьте miniaudio.c в свое исходное дерево, как любой другой исходный файл, и включите Miniaudio.h, как обычный заголовок. Если вы предпочитаете компиляцию как единый блок перевода (иначе, наращивает Unity), вы можете просто #Inclide файл .c в вашем основном исходном файле:
#include "miniaudio.c"Обратите внимание, что разделенная версия автоматически генерируется с использованием инструмента и основана на основном файле в корневом каталоге. Если вы хотите внести свой вклад, пожалуйста, внесите изменения в основном файле.
Совместимость ABI не гарантируется между версиями, поэтому будьте осторожны, если компилируйте как DLL/SO. Предлагаемый способ интеграции Miniaudio - добавить его непосредственно в ваше исходное дерево.
Онлайн -документация можно найти здесь: https://miniaud.io/docs/
Документация также может быть найдена в верхней части Miniaudio.h, которая всегда является самым современным и авторитетным источником информации о том, как использовать Miniaudio. Вся другая документация генерируется из этой встроенной документации.
Miniaudio должен собирать чистоту на других платформах, но он не будет включать какую -либо поддержку воспроизведения или захвата по умолчанию. Чтобы поддержать это, вам нужно будет реализовать пользовательский бэкэнд. Вы можете сделать это без необходимости изменения исходного кода Miniaudio. См. Пример custom_backend.
Ваш выбор общественного достояния или MIT без атрибуции.