기능 - 예제 - 건물 - 문서 - 지원되는 플랫폼 - 라이센스
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와 MacO에는 아무것도 연결할 필요가 없습니다. Linux에서는 -lpthread , -lm 및 -ldl 에 연결됩니다. BSD에서 -lpthread 및 -lm 에 연결하십시오. iOS에서는 objective-c로 컴파일해야합니다.
__sync_val_compare_and_swap_8 , __atomic_load_8 등에 대한 정의되지 않은 참조에 대한 오류가 발생하면 -latomic 과 연결해야합니다.
별도의 .h 및 .c 파일을 선호하는 경우 extras/miniaudio_split 폴더에서 miniaudio의 분할 버전을 찾을 수 있습니다. 여기에서 MiniaUdio를 전통적인 .c 및 .h 라이브러리로 사용할 수 있습니다. 다른 소스 파일과 마찬가지로 소스 트리에 miniaudio.c를 추가하고 MiniaUdio.h를 일반 헤더처럼 포함하십시오. 단일 번역 장치 (일명 Unity Builds)로 컴파일하는 것을 선호하는 경우 기본 소스 파일에서 .c 파일을 #include 할 수 있습니다.
#include "miniaudio.c"분할 버전은 도구를 사용하여 자동으로 생성되며 루트 디렉토리의 기본 파일을 기반으로합니다. 기여하려면 기본 파일을 변경하십시오.
ABI 호환성은 버전간에 보장되지 않으므로 DLL/SO로 컴파일하는 경우주의하십시오. MiniaUdio를 통합하는 제안 된 방법은 소스 트리에 직접 추가하는 것입니다.
온라인 문서는 여기에서 찾을 수 있습니다 : https://miniaud.io/docs/
문서는 MiniaUdio.h의 최상위에서 찾을 수 있습니다. 이는 MiniaUdio 사용 방법에 대한 최신 정보 소스입니다. 다른 모든 문서는이 코드 내 문서에서 생성됩니다.
MiniaUdio는 다른 플랫폼에서 깨끗하게 컴파일해야하지만 기본적으로 재생 또는 캡처에 대한 지원은 포함되지 않습니다. 이를 지원하려면 사용자 정의 백엔드를 구현해야합니다. MiniaUdio 소스 코드를 수정할 필요 없이이 작업을 수행 할 수 있습니다. Custom_backend 예제를 참조하십시오.
공개 도메인 또는 MIT의 선택.