您当前的位置: 首页 > 

鱼儿-1226

暂无认证

  • 4浏览

    0关注

    1100博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

AudioToolBox音频编解码(八)

鱼儿-1226 发布时间:2020-11-04 11:05:29 ,浏览量:4

前言

AAC音频数据格式是一个很常见的音频压缩编码数据格式,经常会有这样的需求,通过麦克风采集到的PCM格式音频数据,编码为AAC格式音频数据,然后通过网络发给另一端,网络的另一端接收到AAC格式音频数据后,解码为PCM格式音频数据。本文将介绍用AudioToobox框架实现音频的编解码

AAC数据格式封装格式ADTS解析

原始音频编码后形成的裸的AAC数据是无法直接解码的,一般会在前面添加能够描述音频信息(如采样率,采样格式,声道数)的头部信息,常见的有ADTS封装格式,如下: (ADTS头部)(压缩的AAC音频数据) ADTS头部 它描述了音频的采样率,采样格式,声道数等信息;具体格式参考如下网站:http://wiki.multimedia.cx/index.php?title=ADTShttp://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Channel_Configurations 下面是由压缩的AAC数据长度/声道数,采样率为44.1kHz生成ADTS头部的代码:

 

- (NSData *)getADTSDataWithPacketLength:(NSInteger)packetLength channel:(int)channel
{
    
    int adtsLength = 7;
    char *packet = malloc(sizeof(char) * adtsLength);
    // Variables Recycled by addADTStoPacket
    int profile = 2;  //AAC LC      编码压缩级别
    int freqIdx = 4;  //44.1KHz     // 采样率
    int chanCfg = channel;          // 声道数
    NSUInteger fullLength = adtsLength + packetLength;
    // fill in ADTS data
    packet[0] = (char)0xFF; // 11111111     = syncword
    packet[1] = (char)0xF9; // 1111 1 00 1  = syncword MPEG-2 Layer CRC
//    packet[1] = (char)0xF1; // 1111 0 00 1  = syncword MPEG-4 Layer CRC
    packet[2] = (char)(((profile-1) 3);
    packet[5] = (char)(((fullLength&7)            
关注
打赏
1604459285
查看更多评论
0.0616s