Características - Ejemplos - Edificio - Documentación - Plataformas compatibles - Licencia
Miniaudio está escrito en C sin dependencias, excepto la biblioteca estándar y debe compilar limpio en todos los compiladores principales sin la necesidad de instalar ningún paquete de desarrollo adicional. Se admiten todas las principales plataformas de escritorio y móviles.
Consulte el manual de programación para obtener una descripción más completa de las características disponibles en Miniaudio.
Este ejemplo muestra una forma de reproducir un sonido usando la API de alto nivel.
#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 ;
}Este ejemplo muestra cómo decodificar y reproducir un sonido utilizando la API de bajo nivel.
#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 ;
}Se pueden encontrar más ejemplos en la carpeta de ejemplos o en línea aquí: https://miniaud.io/docs/examples/
Haga lo siguiente en un archivo fuente:
#define MINIAUDIO_IMPLEMENTATION
#include "miniaudio.h" Entonces solo compilar. No hay necesidad de instalar ninguna dependencia. En Windows y MacOS no hay necesidad de vincular a nada. En Linux solo enlace a -lpthread , -lm y -ldl . En BSD solo enlace a -lpthread y -lm . En iOS necesitas compilar como Objective-C.
Si recibe errores sobre las referencias indefinidas a __sync_val_compare_and_swap_8 , __atomic_load_8 , etc. Debe vincularse con -latomic .
Si prefiere archivos .h y .c separados, puede encontrar una versión dividida de Miniaudio en la carpeta extras/miniaudio_split. Desde aquí puede usar Miniaudio como una biblioteca tradicional .c y .h: solo agregue miniaudio.c a su árbol fuente como cualquier otro archivo fuente e incluya miniaudio.h como un encabezado normal. Si prefiere compilar como una unidad de traducción única (también conocido como Builds Unity), puede simplemente #incluir el archivo .c en su archivo fuente principal:
#include "miniaudio.c"Tenga en cuenta que la versión dividida se genera automáticamente utilizando una herramienta y se basa en el archivo principal en el directorio raíz. Si desea contribuir, realice el cambio en el archivo principal.
La compatibilidad de ABI no está garantizada entre las versiones, así que tenga cuidado si se compila como DLL/SO. La forma sugerida de integrar Miniaudio es agregarlo directamente a su árbol fuente.
La documentación en línea se puede encontrar aquí: https://miniaud.io/docs/
La documentación también se puede encontrar en la parte superior de Miniaudio.h, que siempre es la fuente de información más actualizada y autorizada sobre cómo usar Miniaudio. Toda la demás documentación se genera a partir de esta documentación en el código.
Miniaudio debe compilar limpio en otras plataformas, pero no incluirá ningún soporte para reproducción o captura de forma predeterminada. Para respaldar eso, necesitaría implementar un backend personalizado. Puede hacer esto sin necesidad de modificar el código fuente de Miniaudio. Vea el ejemplo Custom_Backend.
Su elección de dominio público o MIT no atribuye.