功能 - 示例 - 建築物 - 文檔 - 支持平台 - 許可證
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無歸因。