美畅物联丨音视频基础入门:AAC音频格式解析

我们常常提到畅联云平台的视频汇聚功能、视频编码技术,其实音频也是视频汇聚的其中一个关键因素,今天我们来谈谈AAC音频格式。

AAC(Advanced Audio Coding),作为一项前沿的音频编码技术,在数字音频的传输与存储领域占据重要地位。作为MPEG-2及MPEG-4标准的关键组成部分,AAC以其卓越的性能,为音频数据带来了前所未有的高质量体验。

音频码流在视频播放器中的位置如下所示

结构:

AAC原始码流(又称为“裸流”)是由一个一个的ADTS frame组成的。他们的结构如下图所示。

从图上可以总结出两点:

ADTS Frame = ADTS头+AAC ES(AAC音频数据)

ADTS头包含了AAC文件的采样率、通道数、帧数据长度等信息。ADTS头分为固定头信息和可变头信息两个部分,固定头信息在每个帧中的是一样的,可变头信息在各个帧中并不是固定值。ADTS头一般是7个字节((28+28)/ 8)长度,如果需要对数据进行CRC校验,则会有2个Byte的校验码,所以ADTS头的实际长度是7个字节或9个字节。

固定头信息:adts_fixed_header()

·  syncword :同步头 总是0xFFF, all bits must be 1,代表着一个ADTS帧的开始

·  Layer:always: '00'

·  profile:表示使用哪个级别的AAC,有些芯片只支持AAC LC 。在MPEG-2 AAC中定义了4种:

·  sampling_frequency_index:表示使用的采样率下标

·  channel_configuration: 表示声道数

可变头信息:adts_variable_header()

·  copyrighted_id_bit:编码时设置为0,解码时忽略

·  copyrighted_id_start:编码时设置为0,解码时忽略

·  aac_frame_length:ADTS帧长度包括ADTS长度和AAC声音数据长度的和。即aac_frame_length = (protection_absent == 0 ? 9 : 7) + audio_data_length

·  adts_buffer_fullness:固定为0x7FF。表示是码率可变的码流

· number_of_raw_data_blocks_in_frame:表示当前帧有number_of_raw_data_blocks_in_frame + 1 个原始帧(一个AAC原始帧包含一段时间内1024个采样及相关数据)。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值