以下内容主要翻译自官方github,如有误欢迎指正和交流。笔者使用该库完成了WASAPI内录扬声器,参看官方例子,使用确实简单方便多了。
一、介绍
miniaudio是一个只有单.h文件的音频播放和抓取库。它跨平台,它简单易用。相比PortAudio和rtAudio,它只有一个.h文件,直接引用,不需要提前编译成lib文件。
二、支持的操作系统
- Windows (XP+), UWP
- macOS, iOS
- Linux
- BSD
- Android
- Raspberry Pi
- Emscripten / HTML5
三、后端
- WASAPI
- DirectSound
- WinMM
- Core Audio (Apple)
- ALSA
- PulseAudio
- JACK
- sndio (OpenBSD)
- audio(4) (NetBSD and OpenBSD)
- OSS (FreeBSD)
- AAudio (Android 8.0+)
- OpenSL|ES (Android only)
- Web Audio (Emscripten)
- Null (Silence)
四、主要特性
- 宽松的许可协议。
- 只有一个.h头文件,很容易加入到你的工程里。
- 除了C标准库和后端支持库外,需要其他第三方库。
- 用C语言开发,可以编译为C++,支持大多数的编译器。
- 支持主流桌面和移动操作系统,最大化支持各种后端。
- 支持自定义后端。
- 支持播放、抓取、双工和回环 (回环只支持WASAPI)。
- 除了支持默认设备外,还支持枚举和使用已连接的其它音频设备。
- 可同时连接多个设备。
- 部分后端支持共享和排除模式。
- 后端支持特殊配置。
- 支持设备功能查询。
- 自动在你的程序和内部设备之间转换数据。
- 样本格式转换时可选抖动模式。
- 支持频道转换和频道映射。
- 重采样支持多种算法。
- Simple linear resampling with anti-aliasing.
- Optional Speex resampling (must opt-in).
- 过滤器。
- Biquad
- Low-pass (first, second and high order)
- High-pass (first, second and high order)
- Second order band-pass
- Second order notch
- Second order peaking
- Second order low shelf
- Second order high shelf
- 波形生成。
- Sine
- Square
- Triangle
- Sawtooth
- 噪声生成。
- White
- Pink
- Brownian
- 解码。
- WAV
- FLAC
- MP3
- Vorbis via stb_vorbis (not built in - must be included separately).
- 编码。
- WAV
- 无锁环形缓冲区 (支持单生产者,单消费者)。