@ audio/decode-aac
将AAC/M4A和ALAC音频解码为PCM浮标样本. FAAD2 WASM hands AAC;苹果公司参考解码器的一个纯JS端口 hands ALAC. M4A样本条目选择了解码器.
安装
npm i @audio/decode-aac
使用量
import decode from '@audio/decode-aac'
// M4A or raw ADTS; auto-detected
let { channelData, sampleRate } = await decode(uint8array)
// channelData: Float32Array[] (one per channel)
// sampleRate: number
流线
import { decoder } from '@audio/decode-aac'
let dec = await decoder()
let { channelData, sampleRate } = dec.decode(chunk)
dec.free()
decoder() 是一个同步的。 内容 decode() 财务报告和审定财务报表 flush() 方法是同步的.
API 密码
decode(src: Uint8Array | ArrayBuffer): Promise<AudioData>
全文件解码. 自动检测M4A(MP4容器)对生ADTS.
decoder(opts?): Promise<AACDecoder>
创建手动控制的解码器实例.
dec.decode(data)解码 aUint8Array或者说ArrayBuffer块.dec.flush(): 丢弃缓冲部分数据并返回空结果.dec.free():释放出WASM记忆.
没有选项, 字节流是自动检测的( M4A 或 ADTS) 。 装有解码器的集装箱拆解器,通过前接接接接接接接接接接接接接接接接接接接接接 decode() 电话 :
let dec = await decoder({ asc }) // AudioSpecificConfig (esds, Matroska CodecPrivate, WAVEFORMATEX extra bytes)
let dec = await decoder({ alac }) // ALAC magic cookie
就是这样 @ audio/decode-mp4 (英语), (中文(简体) ), @ audio/decode-webm (英语) 财务报告和审定财务报表 @ audio/decode-avi 从视频文件中解码AAC和ALAC轨道.
无缺口
M4A被解码为无间隙:编码器的活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化. 音轨的编辑列表显示演示文稿的起始位置,因为它有一个媒体编辑(ISO/IEC 14496-12 §8.6.6; 有几种是编辑,而不是修饰: 音轨解码整条), 否则iTunes' iTunSMPB 标签; FAAD2 自身的延迟(它扣留了它的第一个帧; SBR 延迟 HE-AAC 962 个样本)被计算在内. 原始的ADTS流没有这样的信息,并且保持了解码器的延迟. 从容器里读取的窗子通过一个解码器:
import { decoder, gapless } from '@audio/decode-aac'
let dec = await decoder({ asc, gapless: gapless({ elst, mdhd, stts, mvhd, ilst, asc }) }) // box bodies
// or directly: { gapless: { start, duration } } in seconds of the media timeline
AudioData
{ channelData: Float32Array[], sampleRate: number }
格式
- M4A / MP4 / MOV 有 AAC 音频( LC和 HE- AAC v1/v2 有 SBR 或 PS) – QuickTime 声音描述 v0, v1和 v2
- M4A / MP4 带位精确纯 JS ALAC 解码于 16, 20, 24 或 32 位
- 原始 ADTS 流 (. aac)
元数据
import { parseMeta } from '@audio/decode-aac/meta'
let { meta, sampleRate } = parseMeta(m4aBytes)
// meta: { title, artist, album, year, genre, track, ..., pictures }
许可证
ॐ AAC 解码 GPL-2.0 导弹 (FAAD2),ALAC解码Apache-2.0 (苹果的ALAC参考端口)