WAVE 编码和解码器
标准WAVE格式的全版编码并解码.
- 以纯类型脚本编写
- 支持核心 WAVE 标准中包含的所有样本格式和位深,包括基于 GUID 的用于 PCM 和 Float 样本格式的子格式,以及 8 位 A-law 和 Mu-law 编码器
- 忽略诸如不支持或未知子圆等
LIST, (中文(简体) ),fact, (中文(简体) ),plst财务报告和审定财务报表junk - 支持读写 WAVE 缓冲器大于 4 GiB,通过解析长度为 2^32 - 1 的块来延伸至缓冲器的末端(即使它大得多). 这与FDISPEG对长数据或流数据输入和输出方法兼容
- 在Node.js、Deno、Bun、浏览器上运行
- 无依赖关系
安装
npm install @echogarden/wave-codec
基本用途
编码和解码原始音频数据,作为32位浮标样本的信道阵列:
import { encodeWaveFromFloat32Channels, decodeWaveToFloat32Channels } from '@echogarden/wave-codec'
// A stereo pair with a few silent samples
const float32Channels = [
new Float32Array([0, 0, 0, 0]),
new Float32Array([0, 0, 0, 0]),
]
const waveData = encodeWaveFromFloat32Channels(float32Channels, 44100)
const decodedChannels = decodeWaveToFloat32Channels(waveData)
原始数据缓冲器的编码和解码
数据为 Uin8Array,并可能包含WAVE标准所支持的任何样本格式,如8位16位,24位,32位整数原始整数PCM,32位或64位浮点,Alaw或Mulaw. 多个渠道应当互通.
import { encodeWaveFromDataBuffer, decodeWaveToDataBuffer, SampleFormat } from '@echogarden/wave-codec'
const audioBuffer = new Uint8Array([0, 0, 0, 0])
const waveData = encodeWaveFromBuffer(
audioBuffer, // Audio data
44100, // Sample rate
1, // Channel count
16, // Bit depth, can be 8, 16, 24, or 32 for PCM, 32 or 64 for Float, 8 for Alaw and Mulaw
SampleFormat.PCM, // Sample format, can be PCM, Float, Alaw or Mulaw
0 // Speaker position mask (used for multichannel audio)
)
const { decodedAudioBuffer,
sampleRate,
channelCount,
bitDepth,
sampleFormat,
speakerPositionMask } = decodeWaveToBuffer(waveData)
在32位浮点通道和数据缓冲器之间转换
这些方法在内部用于将任何支持的样本格式转换为32位浮管,并作为公用方法被曝光.
32位浮式信道阵列 - > 音频数据缓冲器 :
float32ChannelsToBuffer(
audioChannels: Float32Array[],
targetBitDepth: BitDepth = 16,
targetSampleFormat: SampleFormat = SampleFormat.PCM): Uint8Array
音频数据缓冲 - > 32 位浮式通道阵列 :
bufferToFloat32Channels(
audioBuffer: Uint8Array,
channelCount: number,
sourceBitDepth: BitDepth,
sourceSampleFormat: SampleFormat): Float32Array[]
许可证
麻省理工学院