如何在录制iOS时将PCM缓冲区实时转换为AAC数据?

时间:2012-12-04 15:03:18

标签: ios xcode audio core-audio audiounit

我正在使用Remote.IO从PCM获取音频缓冲区,但原始数据太大,无法通过蜂窝网络(3G网络)发送到远程端。我确实参考了一些文章,但大多数都建议将文件转换为其他格式文件。

有没有办法将音频缓冲区转换为实时中的AAC编码数据?

1 个答案:

答案 0 :(得分:1)

您确实可以将音频缓冲区直接保存为AAC格式。

设置ASBD时,请按此设置

AudioStreamBasicDescription audioFormat;
audioFormat.mFormatID = kAudioFormatMPEG4AAC;

在调用ExtAudioFileCreateWithURL时指定kAudioFileM4AType,如下所示:

err = ExtAudioFileCreateWithURL((CFURLRef)audioFileURL,
                             kAudioFileM4AType,
                             &audioFormat, 
                             NULL,
                             kAudioFileFlags_EraseFile,
                             &outFile);

您还需要像这样设置编解码器。

UInt32 codecManf = kAppleSoftwareAudioCodecManufacturer;
ExtAudioFileSetProperty(outFile, kExtAudioFileProperty_CodecManufacturer, sizeof(UInt32), &codecManf);

这可以帮助您实现AAC编码。