AAC_LC用LATM封装header信息解析
2018-02-22 14:20
841 查看
通常来说AAC的头信息在编解码过程中是可以获取到的,但今天需要根据音频参数生成相应的AAC头。项目中使用的是AAC_LC,今天先对它的结构进行分析。 项目中使用ffmpeg进行音频编码,音频编码库为FAAC,好吧,直接看代码吧。 ffmpeg调用Faac_encode_init()初始化编码器;在Faac_encode_init()调用faacEncGetDecoderSpecificInfo()获取AAC_LC头信息内容及长度。
?
从代码中可以看出,头数据长度固定为2; 数据内容由高位到低位依次为:aacObjectType(5bits),sampleRateIdx(4bits),numChannels(4bits)例如:音频编码参数为:aacObjectType:AAC_LC,对应值为2,用5bit二进制表示为00010;sampleRate:44100KHz, 对应的IDX值为4, 用4bit二进制表示为0100; numChannels:2,对应的值为2,用4bit二进制表示为0010;将它们由高位到低位串起来:0001,0010,0001,0000,则,对应的十六进制值为:0x1220
引一些参考资料:http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio
if (object type == 31)
6 bits + 32: object type
4 bits: frequency index
if (frequency index == 15)
24 bits: frequency
4 bits: channel configuration
var bits: AOT Specific Config
1: AAC Main
2: AAC LC (Low Complexity)
3: AAC SSR (Scalable Sample Rate)
4: AAC LTP (Long Term Prediction)
5: SBR (Spectral Band Replication)
6: AAC Scalable
7: TwinVQ
8: CELP (Code Excited Linear Prediction)
9: HXVC (Harmonic Vector eXcitation Coding)
10: Reserved
11: Reserved
12: TTSI (Text-To-Speech Interface)
13: Main Synthesis
14: Wavetable Synthesis
15: General MIDI
16: Algorithmic Synthesis and Audio Effects
17: ER (Error Resilient) AAC LC
18: Reserved
19: ER AAC LTP
20: ER AAC Scalable
21: ER TwinVQ
22: ER BSAC (Bit-Sliced Arithmetic Coding)
23: ER AAC LD (Low Delay)
24: ER CELP
25: ER HVXC
26: ER HILN (Harmonic and Individual Lines plus Noise)
27: ER Parametric
28: SSC (SinuSoidal Coding)
29: PS (Parametric Stereo)
30: MPEG Surround
31: (Escape value)
32: Layer-1
33: Layer-2
34: Layer-3
35: DST (Direct Stream Transfer)
36: ALS (Audio Lossless)
37: SLS (Scalable LosslesS)
38: SLS non-core
39: ER AAC ELD (Enhanced Low Delay)
40: SMR (Symbolic Music Representation) Simple
41: SMR Main
42: USAC (Unified Speech and Audio Coding) (no SBR)
43: SAOC (Spatial Audio Object Coding)
44: LD MPEG Surround
45: USAC
1: 88200 Hz
2: 64000 Hz
3: 48000 Hz
4: 44100 Hz
5: 32000 Hz
6: 24000 Hz
7: 22050 Hz
8: 16000 Hz
9: 12000 Hz
10: 11025 Hz
11: 8000 Hz
12: 7350 Hz
13: Reserved
14: Reserved
15: frequency is written explictly
1: 1 channel: front-center
2: 2 channels: front-left, front-right
3: 3 channels: front-center, front-left, front-right
4: 4 channels: front-center, front-left, front-right, back-center
5: 5 channels: front-center, front-left, front-right, back-left, back-right
6: 6 channels: front-center, front-left, front-right, back-left, back-right, LFE-channel
7: 8 channels: front-center, front-left, front-right, side-left, side-right, back-left, back-right, LFE-channel
8-15: Reserved
?
引一些参考资料:http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio
Audio Specific Config
The Audio Specific Config is the global header for MPEG-4 Audio:5 bits: object typeif (object type == 31)
6 bits + 32: object type
4 bits: frequency index
if (frequency index == 15)
24 bits: frequency
4 bits: channel configuration
var bits: AOT Specific Config
Audio Object Types
MPEG-4 Audio Object Types:0: Null1: AAC Main
2: AAC LC (Low Complexity)
3: AAC SSR (Scalable Sample Rate)
4: AAC LTP (Long Term Prediction)
5: SBR (Spectral Band Replication)
6: AAC Scalable
7: TwinVQ
8: CELP (Code Excited Linear Prediction)
9: HXVC (Harmonic Vector eXcitation Coding)
10: Reserved
11: Reserved
12: TTSI (Text-To-Speech Interface)
13: Main Synthesis
14: Wavetable Synthesis
15: General MIDI
16: Algorithmic Synthesis and Audio Effects
17: ER (Error Resilient) AAC LC
18: Reserved
19: ER AAC LTP
20: ER AAC Scalable
21: ER TwinVQ
22: ER BSAC (Bit-Sliced Arithmetic Coding)
23: ER AAC LD (Low Delay)
24: ER CELP
25: ER HVXC
26: ER HILN (Harmonic and Individual Lines plus Noise)
27: ER Parametric
28: SSC (SinuSoidal Coding)
29: PS (Parametric Stereo)
30: MPEG Surround
31: (Escape value)
32: Layer-1
33: Layer-2
34: Layer-3
35: DST (Direct Stream Transfer)
36: ALS (Audio Lossless)
37: SLS (Scalable LosslesS)
38: SLS non-core
39: ER AAC ELD (Enhanced Low Delay)
40: SMR (Symbolic Music Representation) Simple
41: SMR Main
42: USAC (Unified Speech and Audio Coding) (no SBR)
43: SAOC (Spatial Audio Object Coding)
44: LD MPEG Surround
45: USAC
Sampling Frequencies
There are 13 supported frequencies:0: 96000 Hz1: 88200 Hz
2: 64000 Hz
3: 48000 Hz
4: 44100 Hz
5: 32000 Hz
6: 24000 Hz
7: 22050 Hz
8: 16000 Hz
9: 12000 Hz
10: 11025 Hz
11: 8000 Hz
12: 7350 Hz
13: Reserved
14: Reserved
15: frequency is written explictly
Channel Configurations
These are the channel configurations:0: Defined in AOT Specifc Config1: 1 channel: front-center
2: 2 channels: front-left, front-right
3: 3 channels: front-center, front-left, front-right
4: 4 channels: front-center, front-left, front-right, back-center
5: 5 channels: front-center, front-left, front-right, back-left, back-right
6: 6 channels: front-center, front-left, front-right, back-left, back-right, LFE-channel
7: 8 channels: front-center, front-left, front-right, side-left, side-right, back-left, back-right, LFE-channel
8-15: Reserved
相关文章推荐
- AAC_LC用LATM封装header信息解析
- AAC_LC用LATM封装header信息解析 Audio Specific Config格式分析
- FFMPEG解析MP4格式封装的视频为YUV和AAC
- DVSDK中的AAC-LC码流分析(1):adts_fixed_header()
- DVSDK中的AAC-LC码流分析(2):adts_variable_header()
- 05_XML的解析_02_dom4j 解析将信息封装到对象中
- 利用dom4j解析.xml之将xml文本信息封装成对象
- day06:dom4j解析XML,并把xml文档信息封装到对象中
- 解析XML并将信息封装到对象中
- header头信息解析以及CORS 跨域 access-control-allow-headers 的问题
- 给volley封装访问的header头信息,利用头信息区分和校验用户权限
- 简单封装Google的二维码生成/解析工具——zxing
- Cts框架解析(16)-logcat信息收集系统
- PrefixHeader.pch 引入的头文件信息先后顺序很重要
- 分页查询产品信息,第六步;封装结果
- OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据
- Windows出错信息解析及解决方案
- 解析Android获取系统cpu信息,内存,版本,电量等信息的方法详解
- 【Android】 ANR异常及traces信息解析
- xml两种解析方式(封装了获得文档和回写)