zoukankan      html  css  js  c++  java
  • AAC的AudioSpecificConfig细节

    AAC格式里有个复杂的AudioSpecificConfig, 在FLV格式里称为AAC sequence header。在正式播放ADTS AAC数据包之前,需要用AudioSpecificConfig生成一个audio_tag交给播放器。
    其实AudioSpecificConfig的内容,完全可以通过ADTS的7字节头生成,具体来说,AudioSpecificConfig需要3部分数据:profile(LC,Main,HE),sample_rate, channel,这3个数据在ADTS头里都可以找到。具体算法见代码。
    有了这3个数据以后,可以进行合并生成2个字节,就是所谓的AudioSpecificConfig,见代码部分config1/config2的算法。
     
    //output AAC config header:
     
    var profile:int = ((payload[2]&0xc0)>>6)+1;
    var sample_rate:int = (payload[2]&0x3c)>>2;
    var channel:int = ((payload[2]&0x1)<<2)|((payload[3]&0xc0)>>6);
     
    var config1:int = (profile<<3)|((sample_rate&0xe)>>1);
    var config2:int = ((sample_rate&0x1)<<7)|(channel<<3);
     
    var aacSeqHeader:ByteArray = new ByteArray();
    aacSeqHeader.writeByte(config1);
    aacSeqHeader.writeByte(config2);
     
    根据第一个ADTS包生成的aacSeqHeader,打包到audio_tag里,交给NetStream,后面的ADTS包就可以直接打包成audio_tag播放了。
  • 相关阅读:
    【读书笔记】房龙-人类的故事
    【读书笔记】曼昆-经济学原理:宏观经济学分册
    【读书笔记】曼昆-经济学原理:微观经济学分册
    ES6数组去重
    switch语句
    if语句的优化
    程序的三大结构
    NaN
    js中常见的数据类型
    变量的命名规则
  • 原文地址:https://www.cnblogs.com/lidabo/p/7234778.html
Copyright © 2011-2022 走看看