2

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

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

4

1 回答 1

1

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

在设置 ASBD 时,像这样设置

AudioStreamBasicDescription audioFormat;
audioFormat.mFormatID = kAudioFormatMPEG4AAC;

kAudioFileM4AType像这样调用 ExtAudioFileCreateWithURL 时指定:

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

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

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

这应该可以帮助您使 AAC 编码正常工作。

于 2013-01-03T06:58:24.183 回答