通过AudioConverterFillComplexBuffer将AAC转换为LPCM

时间:2012-05-22 16:31:11

标签: ios rtp aac

我正在尝试使用'音频转换器服务' - AudioConverterFillComplexBuffer

我遇到了很多问题。首先,我不知道如何填充ioOutputDataPacketSize。我已经解析了我的SDP描述符,我得到8000Hz,1个通道 AAC-LC。

a=fmtp:98 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1588

我收到一些准备好通过RTP(各种大小)进行转换的数据,删除如下所示的标题,然后我期待的是一个16位AU-headers-length字段,然后我会有AU标题应该允许我确定帧/数据包大小等。我看到的只是标题长度为零...

我通过RTP收到AAC-LC / AAC-hbr,收到的数据包如下:

0x24 0x00  - unknown framing

0x05 0x84 - rfc4571 - 2bytes packet length

0x80 0x61 0x00 0x00 - 12bytes rtp header - rfc3016
0x00 0x00 0x05 0xA0 
0x05 0x5F 0xEB 0x2E 

0x00 0x00 0x01 0xB0 - rtp payload ie. start of AAC header??
0x03 0x00 0x00 0x01 
0xB5 0x09 0x00 0x00 
0x01 0x00 0x00 0x00 
0x01 0x20 0x00 0x84 
0x40 0x06 0x68 0xA0 
0x21 0xE0 0xA3 0x1F 
0x00 0x00 0x01 0xB6 ...

我每隔几秒就得到上面的'标题',并在几个包之间得到:

0x00 0x00 0x01 0xB6

所以它看起来像一个一致的标题,但也许我误解了rfc3640。

真的有两个问题:

  1. 如何确定ioOutputDataPacketSize的值。

  2. AAC标题是否高于实际的AAC数据,我可以直接进入转换功能?或者我是否需要剥离标题(一旦我能够实际解码并计算其大小)

  3. 我还没有找到任何从一个NSData输入转换到另一个NSData输出的示例。一些使用基于磁盘的转换的示例,但它们对内存转换没有太大帮助。

1 个答案:

答案 0 :(得分:0)

我的错误,这不是我正在看的音频数据,而是视频数据!现在我实际上可以提取正确大小的数据包。