解码流程
- 解码aac数据,的数据来源主要有两个:
- aac文件
- 网络流
- 当是aac文件时,可用av_read_frame读取packet数据,进行解码,解码流程为:
- 创建解码器
- 设置文件流
- 读取aac数据(包含aac头),解码
当是aac文件或者网络流时,解码流程为:
从aac头解析aac_frame_len
int get_aac_frame_len(UINT8* aac_header){int size = 0;if (NULL == aac_header){return -1;}size |= (aac_header[3] & 0b00000011) << 11; //0x03 前两个最高位,要移到高位(13 - 11 = 2)size |= aac_header[4] << 3; //中间的8bit,要移到前两个高位后,13 - 2 = 11 - 8 = 3size |= (aac_header[5] & 0b11100000) >> 5; //0xe0 最后的3Bit,要移到最后printf("size:%d\n", size);return size;}
aac解码后的pcm时fltp位深,需要转换成s16位深,这样声卡才能播放
