@ra2web/wavefile
Version:
WAV file processing library from ra2web project
129 lines (94 loc) • 2.88 kB
Markdown
# @ra2web/wavefile
一个从ra2web项目中提取的WAV文件处理库。该库提供了读取、写入和操作WAV音频文件的全面功能。
## 特性
- 读写WAV文件
- 支持多种位深(8、16、24、32、64位)
- 支持浮点音频格式(32f、64)
- 音频压缩格式(IMA-ADPCM、A-Law、μ-Law)
- 采样率转换
- 位深转换
- 音频格式转换
- Base64编码/解码
- 数据URI支持
## 安装
```bash
npm install @ra2web/wavefile
```
## 使用
### 基础用法
```javascript
import { WaveFile } from '@ra2web/wavefile';
// 创建新的WaveFile实例
const wav = new WaveFile();
// 从缓冲区加载
const buffer = /* 你的音频缓冲区 */;
wav.fromBuffer(buffer);
// 访问音频属性
console.log('采样率:', wav.fmt.sampleRate);
console.log('声道数:', wav.fmt.numChannels);
console.log('位深:', wav.bitDepth);
// 获取采样值
const samples = wav.getSamples();
// 转换为不同格式
wav.toBitDepth('16');
wav.toSampleRate(44100);
// 导出为缓冲区
const outputBuffer = wav.toBuffer();
```
### 格式转换
```javascript
// 转换为不同压缩格式
wav.toALaw(); // 转换为A-Law
wav.toMuLaw(); // 转换为μ-Law
wav.toIMAADPCM(); // 转换为IMA-ADPCM
// 从压缩格式转换
wav.fromALaw();
wav.fromMuLaw();
wav.fromIMAADPCM();
```
### Base64和数据URI支持
```javascript
// 转换为Base64
const base64String = wav.toBase64();
// 从Base64加载
wav.fromBase64(base64String);
// 转换为数据URI
const dataUri = wav.toDataURI();
// 从数据URI加载
wav.fromDataURI(dataUri);
```
## API参考
### WaveFile类
#### 构造函数
- `new WaveFile(buffer?)` - 创建新的WaveFile实例(可选从缓冲区初始化)
#### 方法
##### 文件I/O
- `fromBuffer(buffer)` - 从缓冲区加载WAV数据
- `toBuffer()` - 导出WAV数据为缓冲区
- `fromBase64(base64String)` - 从Base64字符串加载WAV数据
- `toBase64()` - 导出WAV数据为Base64字符串
- `fromDataURI(dataUri)` - 从数据URI加载WAV数据
- `toDataURI()` - 导出WAV数据为数据URI
##### 格式转换
- `toBitDepth(bitDepth, dithered?)` - 转换位深
- `toSampleRate(sampleRate, options?)` - 转换采样率
- `toRIFF()` - 转换为RIFF格式
- `toRIFX()` - 转换为RIFX格式
##### 压缩
- `toALaw()` - 转换为A-Law压缩
- `fromALaw(bitDepth?)` - 从A-Law压缩转换
- `toMuLaw()` - 转换为μ-Law压缩
- `fromMuLaw(bitDepth?)` - 从μ-Law压缩转换
- `toIMAADPCM()` - 转换为IMA-ADPCM压缩
- `fromIMAADPCM(bitDepth?)` - 从IMA-ADPCM压缩转换
##### 音频数据
- `getSamples(interleaved?)` - 获取音频采样值
#### 属性
- `fmt` - 格式块数据
- `data` - 音频数据块
- `bitDepth` - 当前位深
- `container` - 容器格式(RIFF/RIFX/RF64)
## 许可证
MIT
## 贡献
本库从ra2web项目中提取。有关问题和贡献,请参考原始项目仓库。