iOS 音频使用AAC HE编码

定义音频格式宏

#define PROFILE_AAC_LC 2
#define PROFILE_AAC_HE 5
#define PROFILE_AAC_HE_v2 29
#define PROFILE_AAC_LD 23
#define PROFILE_AAC_ELD 39

初始化

HANDLE_AACENCODER _encoder;

AACENC_ERROR rt = aacEncOpen(&_encoder, 0, 0);
  if (rt != AACENC_OK) {
    NSLog(@"aac enc open error %zd",rt);
    return;
  }
  aacEncoder_SetParam(_encoder, AACENC_AOT, PROFILE_AAC_HE_v2);
  aacEncoder_SetParam(_encoder, AACENC_BITRATE, 64 * 1000);
  aacEncoder_SetParam(_encoder, AACENC_SAMPLERATE, 44100);
  aacEncoder_SetParam(_encoder, AACENC_CHANNELMODE, MODE_2);

编码

  size_t length = xx;//pcm len
  char *point = xx; //pcm data
 
  AACENC_BufDesc in = {0};
  {
    INT bid = IN_AUDIO_DATA;
    INT elSize = 2;
    void *buf[1] = {point};
    in.bufs = buf;
    in.numBufs = 1;
    in.bufferIdentifiers = &bid;
    in.bufElSizes = &elSize;
  }
 
  AACENC_BufDesc out = {0};
  {
    INT size = 1024;
    INT bid = OUT_BITSTREAM_DATA;
    void *buf[1] = {malloc(1024)};
    INT elSize = 1;
   
    out.bufs = buf;
    out.bufSizes = &size;
    out.numBufs = 1;
    out.bufferIdentifiers = &bid;
    out.bufElSizes = &elSize;
  }
 
  AACENC_InArgs inArgs = {0};
  inArgs.numInSamples = (INT)length/2;
 
  AACENC_OutArgs outArgs = {0};
 
  AACENC_ERROR rt = aacEncEncode(_encoder, &in, &out, &inArgs, &outArgs);
  if (rt != AACENC_OK) {
    NSLog(@"aac enc encode error %zd",rt);
  }else{
    NSLog(@"aac enc encode size %zd %zd",outArgs.numOutBytes, out.bufSizes[0]);
  }
 
  if (out.bufs[0]) {
    free(out.bufs[0]);
  }

参考
vlc的例子 https://fossies.org/linux/vlc/modules/codec/fdkaac.c

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,616评论 6 427
  • 教程一:视频截图(Tutorial 01: Making Screencaps) 首先我们需要了解视频文件的一些基...
    90后的思维阅读 4,819评论 0 3
  • 视频编码与封装方式详解 1.编码方式和封装格式 2.视频编码标准两大系统 MPEG-1 MPEG-2 MPEG-3...
    latthias阅读 6,451评论 0 22
  • 再进步的时代也改变不了垃圾人的思想,一大早都碰的什么鬼!上电梯碰一龇着胡子貌似藏獒的老太太,推着个小孩车占...
    坤哥最帅阅读 535评论 0 0