Fitur - Contoh - Bangunan - Dokumentasi - Platform yang Didukung - Lisensi
Miniaudio ditulis dalam C tanpa dependensi kecuali pustaka standar dan harus mengkompilasi bersih pada semua kompiler utama tanpa perlu menginstal paket pengembangan tambahan. Semua platform desktop dan seluler utama didukung.
Lihat manual pemrograman untuk deskripsi yang lebih lengkap tentang fitur yang tersedia di minidio.
Contoh ini menunjukkan satu cara untuk memainkan suara menggunakan API tingkat tinggi.
#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 ;
}Contoh ini menunjukkan cara memecahkan kode dan memutar suara menggunakan API level rendah.
#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 ;
}Lebih banyak contoh dapat ditemukan di folder contoh atau online di sini: https://miniaud.io/docs/examples/
Lakukan hal berikut dalam satu file sumber:
#define MINIAUDIO_IMPLEMENTATION
#include "miniaudio.h" Lalu kompilasi saja. Tidak perlu menginstal ketergantungan apa pun. Di Windows dan MacOS tidak perlu menautkan ke apa pun. Di linux hanya menautkan ke -lpthread , -lm dan -ldl . Di BSD cukup tautan ke -lpthread dan -lm . Di iOS Anda perlu dikompilasi sebagai Objective-C.
Jika Anda mendapatkan kesalahan tentang referensi yang tidak ditentukan ke __sync_val_compare_and_swap_8 , __atomic_load_8 , dll. Anda perlu menautkan dengan -latomic .
Jika Anda lebih suka file .h dan .c terpisah, Anda dapat menemukan versi split minidio di folder ekstra/miniaudio_split. Dari sini Anda dapat menggunakan miniaudio sebagai perpustakaan tradisional .c dan .h - cukup tambahkan miniaudio.c ke pohon sumber Anda seperti file sumber lainnya dan sertakan miniaudio.h seperti header normal. Jika Anda lebih suka menyusun sebagai unit terjemahan tunggal (alias Unity Builds), Anda dapat #termasuk file .c di file sumber utama Anda:
#include "miniaudio.c"Perhatikan bahwa versi split dihasilkan secara otomatis menggunakan alat dan didasarkan pada file utama di direktori root. Jika Anda ingin berkontribusi, silakan lakukan perubahan dalam file utama.
Kompatibilitas ABI tidak dijamin antara versi jadi berhati -hatilah jika dikompilasi sebagai DLL/SO. Cara yang disarankan untuk mengintegrasikan minidi adalah dengan menambahkannya langsung ke pohon sumber Anda.
Dokumentasi online dapat ditemukan di sini: https://miniaud.io/docs/
Dokumentasi juga dapat ditemukan di bagian atas miniaudio.h yang selalu merupakan sumber informasi terkini dan otorititif tentang cara menggunakan miniaudio. Semua dokumentasi lain dihasilkan dari dokumentasi dalam kode ini.
Miniaudio harus mengkompilasi bersih pada platform lain, tetapi tidak akan termasuk dukungan untuk pemutaran atau penangkapan secara default. Untuk mendukung itu, Anda perlu menerapkan backend khusus. Anda dapat melakukan ini tanpa perlu memodifikasi kode sumber miniaudio. Lihat contoh custom_backend.
Pilihan Anda untuk domain publik atau mit tanpa atribusi.