type
status
date
slug
summary
tags
category
icon
password
Property
Mar 20, 2023 03:15 AM

基础知识

notion image

ADIF 和 ADTS

notion image

AAC 结构体

notion image

adts_fixed_header 组成

notion image
notion image
notion image
  • profile:
    • notion image
      notion image
FFmpeg 中对应的定义:
notion image
  • sampling_frequency_index:
    • notion image
  • channel_configuration:
notion image

adts_variable_header 组成

notion image

ADTS 的 AAC 分析

notion image
notion image
notion image
 
notion image
notion image
notion image
notion image
notion image

提取 AAC 代码

  • 从视频文件中提取音频数据并封装为 AAC
    • adts_header 函数分析:
      • 这段代码是生成AAC数据的ADTS头的代码,ADTS头是一种将AAC音频编码后的数据进行封装的格式,其中包含了音频格式、长度、采样率、声道数等信息。这些信息可以帮助解码器正确的解析音频数据。
      • 具体的代码逻辑如下:
          1. 第1个字节高8位为0xff,低4位为0xf0,这是ADTS头的同步字,用于标识数据帧的开始。
          1. 第2个字节的第3位为MPEG版本,第4和5位为Layer,这些信息描述了AAC编码的版本和层次。
          1. 第2个字节的第1位为保护标志,表示是否进行了错误保护,这里是1,表示没有进行保护。
          1. 第2个字节的第2位为私有标志,这里是0,表示不使用私有标志。
          1. 第2个字节的第6、7位为音频格式,这里是profile,表示使用哪种AAC配置。
          1. 第2个字节的第8-11位为采样率,这里是sampling_frequency_index,表示使用哪种采样率。
          1. 第3个字节的第1-4位为声道数,这里是channels。
          1. 第3个字节的第6-9位为采样率,这里也是sampling_frequency_index。
          1. 第3个字节的第5位为原始标志,表示音频是否为原始音频,这里是0,表示不是原始音频。
          1. 第3个字节的第4位为版权标志,表示是否使用了版权保护,这里是0,表示没有使用。
          1. 第3个字节的第3位为版权标志开始标志,表示版权信息开始的位置,这里是0,表示没有版权信息。
          1. 第3个字节的第8-9位和第4个字节的前2位为数据帧长度,这里是adtsLen。
          1. 第4个字节的第3-9位为数据帧长度,这里也是adtsLen。
          1. 第5个字节的第1-3位为数据帧长度,这里也是adtsLen。
          1. 第5个字节的第4-8位为缓冲区满标志,这里是0x7ff,表示缓冲区已满。
          1. 第6个字节的第1-6位为缓冲区满标志,这里也是0x7ff。
          1. 第7个字节的第1-2位为数据块数,这里是0,表示只有1个数据块。
    H.264/AVC 视频编码格式分析校招答疑分享