使用FAAC实现PCM转AAC

一、前言

AAC全称为Advanced Audio Coding,目前比较主流的AAC开源编码器主要有Nero和Faac。接下来我们将使用Faac实现音频PCM至AAC的音频格式转换,并使用Emscripten编译成WebAssembly模块。

二、实现步骤

使用Faac实现音频编码,主要有以下步骤:
FAAC编码示意图

2.1 主要函数
  • faacEncOpen
faacEncHandle FAACAPI faacEncOpen(unsigned long sampleRate,
    unsigned int numChannels,
    unsigned long *inputSamples,
    unsigned long *maxOutputBytes
);
变量名 变量含义
sampleRate 输入PCM的采样率。
numChannels 输入PCM的通道数。
inputSamples 编码一帧AAC所需要的字节数,打开编码器后获取,故声明时不需赋值。
maxOutputBytes 编码后的数据输出的最大长度。
  • faacEncEncode
int FAACAPI faacEncEncode(faacEncHandle hEncoder,
    int32_t * inputBuffer,
    unsigned int samplesInput,
    unsigned char *outputBuffer,
    unsigned int bufferSize
);
变量名 变量含义
hEncoder faacEncOpen返回的编码器句柄
inputBuffer PCM缓冲区
samplesInput faacEncOpen编码后的数据长度inputSamples,即PCM缓冲区长度
outputBuffer 编码后输出数据
bufferSize 输出数据的长度,对应faacEncOpen的maxOutputBytes
2.2 编码器参数

与Faac编码器相关的配置在faaccfg.h中声明。主要参数的含义如下:

// 生成的mpeg版本,如果需要录制MP4则设置为MPEG4,如果希望得到未封装的AAC裸流,则设置为MPEG2
// 0-MPEG4 1-MPEG2
unsigned int mpegVersion;

// AAC编码类型
// 1-MAIN 2-LOW 3-SSR 4-LTP</
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值