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播放了。
  • 相关阅读:
    【题解】P2262 [HNOI2004]FTP服务器
    关于大模拟
    CodeForces 666E Forensic Examination
    Bzoj3233 [Ahoi2013]找硬币
    Bzoj4350 括号序列再战猪猪侠
    UOJ#31 【UR #2】猪猪侠再战括号序列
    UOJ#21 【UR #1】缩进优化
    51nod1667 概率好题
    [CodeChef
    51nod1245 Binomial Coefficients Revenge
  • 原文地址:https://www.cnblogs.com/lidabo/p/7234778.html
Copyright © 2011-2022 走看看