SBC 音频格式解码库,基于 Node.js 原生扩展实现,支持 SBC 格式音频数据解码为 PCM 数据。
npm install sbc-decoderbash
npm install sbc-decoder
`
基本使用
$3
`javascript
const SBC = require('sbc-decoder');
const fs = require('fs');
// 初始化 SBC 解码器
const initResult = SBC.init();
if (initResult !== 0) {
console.error('解码器初始化失败');
process.exit(1);
}
// 读取 SBC 编码文件
const sbcData = fs.readFileSync('input.sbc');
// 准备目标缓冲区(根据实际需求调整大小,通常 PCM 数据量大于 SBC 数据)
const pcmBuffer = Buffer.alloc(sbcData.length * 4); // 预估缓冲区
// 解码 SBC 数据
const decodedLength = SBC.decode(sbcData, sbcData.length, pcmBuffer);
if (decodedLength > 0) {
console.log(解码成功,PCM 数据长度:${decodedLength} 字节);
// 写入解码后的 PCM 数据(16位音频格式)
fs.writeFileSync('output.pcm', pcmBuffer.slice(0, decodedLength));
} else {
console.error('解码失败');
}
`
$3
`typescript
import SBC from 'sbc-decoder';
import fs from 'fs';
// 初始化解码器
const initResult = SBC.init();
if (initResult !== 0) {
console.error('解码器初始化失败');
process.exit(1);
}
// 读取 SBC 数据
const sbcData = fs.readFileSync('input.sbc');
const pcmBuffer = Buffer.alloc(sbcData.length * 4);
// 解码
const decodedLength = SBC.decode(sbcData, sbcData.length, pcmBuffer);
if (decodedLength > 0) {
console.log(解码成功,长度: ${decodedLength} 字节);
fs.writeFileSync('output.pcm', pcmBuffer.slice(0, decodedLength));
} else {
console.error('解码失败');
}
`
API 说明
$3
初始化 SBC 解码器。
- 返回值:0 表示初始化成功,非 0 表示初始化失败。
$3
解码 SBC 格式音频数据到 PCM 格式。
- 参数:
- srcBuffer:包含 SBC 编码数据的缓冲区
- dataLen:SBC 数据的长度(字节数)
- dstBuffer:用于存储解码后 PCM 数据的缓冲区(需提前分配足够空间)
- 返回值:解码后的 PCM 数据长度(字节数),0 表示解码失败。
注意事项
1. 必须先调用 init() 并确保返回 0 后,才能调用 decode() 方法
2. dstBuffer` 需要提前分配足够的空间,建议大小为 SBC 数据长度的 4 倍以上