คุณสมบัติ - ตัวอย่าง - อาคาร - เอกสาร - แพลตฟอร์มที่รองรับ - ใบอนุญาต
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 แยกกันคุณสามารถค้นหา Miniaudio รุ่นแยกในโฟลเดอร์ Extras/Miniaudio_split จากที่นี่คุณสามารถใช้ Miniaudio เป็นไลบรารี. C และ .H แบบดั้งเดิม - เพียงเพิ่ม miniaudio.c ลงในแผนผังต้นทางของคุณเช่นไฟล์ต้นฉบับอื่น ๆ และรวมถึง miniaudio.h เหมือนส่วนหัวปกติ หากคุณต้องการรวบรวมเป็นหน่วยแปลเดียว (AKA Unity Builds) คุณสามารถ #รวมไฟล์. c ในไฟล์ต้นฉบับหลักของคุณ:
#include "miniaudio.c"โปรดทราบว่ารุ่นแยกนั้นสร้างโดยอัตโนมัติโดยใช้เครื่องมือและขึ้นอยู่กับไฟล์หลักในไดเรกทอรีรูท หากคุณต้องการมีส่วนร่วมโปรดทำการเปลี่ยนแปลงในไฟล์หลัก
ความเข้ากันได้ของ ABI ไม่ได้รับประกันระหว่างเวอร์ชันดังนั้นจึงดูแลถ้ารวบรวมเป็น DLL/SO วิธีที่แนะนำในการรวม Miniaudio คือการเพิ่มลงในแผนผังต้นทางโดยตรง
เอกสารออนไลน์สามารถพบได้ที่นี่: https://miniaud.io/docs/
เอกสารสามารถพบได้ที่ด้านบนของ miniaudio.h ซึ่งเป็นแหล่งข้อมูลที่ทันสมัยที่สุดและได้รับรางวัลมากที่สุดเกี่ยวกับวิธีการใช้ Miniaudio เอกสารอื่น ๆ ทั้งหมดถูกสร้างขึ้นจากเอกสารในรหัสนี้
Miniaudio ควรรวบรวมความสะอาดบนแพลตฟอร์มอื่น ๆ แต่จะไม่รวมการสนับสนุนสำหรับการเล่นหรือการจับภาพตามค่าเริ่มต้น เพื่อสนับสนุนสิ่งนั้นคุณจะต้องใช้แบ็กเอนด์ที่กำหนดเอง คุณสามารถทำได้โดยไม่จำเป็นต้องแก้ไขซอร์สโค้ด Miniaudio ดูตัวอย่าง custom_backend
การเลือกโดเมนสาธารณะหรือ MIT ไม่มีการระบุแหล่งที่มา