@ audio/decode-avi
将AVI文件的音频流解码为PCM浮标样本.
纯JS RIFF/ AVI 解调器( OpenDML) AVIX 包括扩展),可以跳过视频流,将音频引导到匹配的编码包,按需要加载.
import decode, { decoder } from '@audio/decode-avi'
let { channelData, sampleRate } = await decode(aviBytes)
let dec = await decoder()
let head = await dec.decode(chunk1) // Promise on the chunk that completes the stream headers
let more = dec.decode(chunk2) // synchronous from then on
let tail = await dec.flush()
dec.free()
编解码器
wFormatTag | 代码c | 解码由 |
|---|---|---|
0x0001, (中文(简体) ), 0x0003 (和 WAVE_FORMAT_EXTENSIBLE(中文(简体) ) | PCM 8–32 位点正中, 32/64 位点浮点 | 建于内 |
0x0006, (中文(简体) ), 0x0007 | G.711 准法律、准法律 | 建于内 |
0x0055 | MP3 主题 | @ audio/decode-mp3 (英语) |
0x00FF | 审计咨询委员会 | @ audio/decode-aac |
0x2000 | AC-3号 | @ audio/decode-ac3 (英语) |
0x2001 | 数字 | @ audio/decode-dts (英语) |
WMA和 ADPCM 流丢出一个给代码命名错误 。 第一个 auds 流已解码.
解码器包是动态导入的,在 AudioWorklet —— 主线程或 Worker 中解码器内部是没有的.
API 密码
decode(src: Uint8Array | ArrayBuffer): Promise<AudioData>
解码一个完整的文件 .
decoder(): Promise<AVIDecoder>
流出解码器. decode(chunk) 返回时 AudioData,或者在编解码模块加载时完成流头的块上承诺. flush() 如果找不到音频流,则返回所剩样本并丢出. free() 释放代码资源.
AudioData
{ channelData: Float32Array[], sampleRate: number }
