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播放了。
  • 相关阅读:
    docker部署archery
    System系统类
    多变量的梯度下降
    matlab基础语法
    代价函数
    文件操作
    python集合关系
    python日记(四)字典的常见用法
    python日记(三)常用字符串用法
    python日记(二)购物车程序
  • 原文地址:https://www.cnblogs.com/lidabo/p/7234778.html
Copyright © 2011-2022 走看看