rtmp封装不同采样率的AAC

本文深入探讨RTMP封装AAC音频的过程,解析音频同步包结构,包括AACDecoderSpecificInfo和AudioSpecificConfig的作用,以及如何根据ISO14496-3标准指定AAC类型和采样率。
部署运行你感兴趣的模型镜像

参考文章:https://www.cnblogs.com/lidabo/p/7324369.html

flv文件格式:https://www.cnblogs.com/musicfans/archive/2012/11/07/2819291.html

ISO文档:http://read.pudn.com/downloads98/doc/comm/401153/14496/ISO_IEC_14496-3%20Part%203%20Audio/C036083E_SUB1.PDF

 

rtmp封装AAC第一帧数据时,需要音频同步包,里面包含AAC的相关信息。音频同步包大小固定为 4 个字节。前两个字节被称为 [AACDecoderSpecificInfo],用于描述这个音频包应当如何被解析。后两个字节称为 [AudioSpecificConfig],更加详细的指定了音频格式。

下图为前两个字节 0xAF 0x00

wKioL1Qje6_ApXbFAALZEhnUQhw347.jpg

由上图可知,AAC的soundRate固定为3

 

wKiom1Qj3lqRKafiAAKNXyQMvTU565.jpg

由上图可知:

后两个字节需要指定AAC的类型和采样率,

AAC sequence header也就是包含了AudioSpecificConfigAudioSpecificConfig包含着一些更加详细音频的信息,AudioSpecificConfig的定义在ISO14496-31.6.2.1 AudioSpecificConfig,这里就不详细贴了。摘抄自https://www.cnblogs.com/musicfans/archive/2012/11/07/2819291.html

查看ISO文档可知

1.6.3.3 samplingFrequencyIndex

1.5.1 MPEG-4 audio object types:

AAC-LC的type为2

 

根据上述图标,举例:

AAC LC 8000Hz,则第一帧配置为

body[i++] = 0xAF;
body[i++] = 0x00;
body[i++] = 0x15;
body[i++] = 0x90;

后两个字节为

00010 1011 0010 0 0 0

AACLC 8000hz stereo 

您可能感兴趣的与本文相关的镜像

Seed-Coder-8B-Base

Seed-Coder-8B-Base

文本生成
Seed-Coder

Seed-Coder是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体,由字节团队开源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值