功能 - 示例 - 建筑物 - 文档 - 支持平台 - 许可证
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上,您需要作为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构建),则可以在主源文件中#include .c文件:
#include "miniaudio.c"请注意,拆分版本是使用工具自动生成的,并且基于根目录中的主文件。如果您想贡献,请在主文件中进行更改。
版本之间不能保证ABI兼容性,因此如果以DLL/SO为单位,请注意。整合Miniaudio的建议方法是将其直接添加到您的源树中。
在线文档可以在此处找到:https://miniaud.io/docs/
也可以在Miniaudio.h的顶部找到文档,这始终是有关如何使用Miniaudio的最新信息来源。所有其他文档都是从此内编码文档生成的。
Miniaudio应该在其他平台上编译清洁,但默认情况下将不包括对播放或捕获的任何支持。为了支持这一点,您需要实现自定义后端。您可以执行此操作,而无需修改Miniaudio源代码。请参阅custom_backend示例。
您选择的公共领域或MIT无归因。