rtmp封包分析之flv格式封包细节

阅读基础

flv格式分析与解复用-CSDN博客

原因

为什么要讨论flv封包?因为rtmp基于flv进行传输数据,我们需要将data -> flv.data ->rtmp.data

在上述文章中,我们是对音视频flv格式解复用探讨,但是对于封包的操作细节并没有探讨,且没有对aac和h264的sequence header详细描述。sequence header在flv封包中起到开篇点题的作用,所以我们要搞清楚sequence header基本结构。

aac sequence header

sequence header解析

flv格式数据音频第一帧是配置信息数据包,所以我们对aac seq进行详细解析。

AudioSpecificConfig 4B
字段名称                    字节数        描述
audioObjectType            5 bits        AAC 音频编码类型
samplingFrequencyIndex     4 bits        采样率索引
channelConfiguration       4 bits        声道数
//可选字段
frameLengthFlag            1 bit         帧长度标志
dependsOnCoreCoder         1 bit         是否依赖核心编码器
extensionFlag              1 bit         扩展标志

AudioSpecificConfig() {
    audioObjectType;                 // 5 bits
    samplingFrequencyIndex;         // 4 bits
    if (samplingFrequencyIndex == 0xF)
        samplingFrequency;          // 24 bits
    channelConfiguration;           // 4 bits
    if (audioObjectType == 29)
        extensionAudioObjectType;   // 5 bits
    
    // 可能还有其他可选字段
}

AudioSpecificConfig包含着一些更加详细的音频信息,它的定义在ISO14496-3中1.6.2.1。

ps:下列字节是从1开始(以数组索引需-1)

字段 占位 含义
AAC Profile编码级别 5 bits

编码级别:

AAC Main 0x01  

AAC LC 0x02  

AAC SSR 0x03

AAC Sample Frequence采样率

4bit


const int sampling_frequencies[] = {
    96000,  // 0x0
    88200,  // 0x1
    64000,  // 0x2
    48000,  // 0x3
    44100,  // 0x4
    32000,  // 0x5
    24000,  // 0x6
    22050,  // 0x7
    16000,  // 0x8
    12000,  // 0x9
    11025,  // 0xa
    8000,   // 0xb
    7350    // 0xc
    // 0xd e f是保留的

};

AAC Channel config通道数 4bit

0x00 - 未定义

0x01 - 单声道 (center front speaker)

0x02 - 双声道 (left, right front speakers)

0x03 - 三声道 (center, left, right front speakers)

0x04 - 四声道 (center, left, right front speakers, rear surround speakers)

0x05 - 五声道 (center, left, right front speakers, left surround, right surround rear speakers)

0x06 - 5.1 声道 (center, left, right front speakers, left surround, right surround rear speakers, front low frequency effects speaker)

0x07 - 7.1 声道 (center, left, right center front speakers, left, right outside front speakers, left surround, right surround rear speakers, front low frequency effects speaker)

0x08 - 0x0F - 保留

frameLengthFlag                 1 bit 帧长度标志
dependsOnCoreCoder     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值