【发布时间】:2012-12-04 15:03:17
【问题描述】:
我正在使用 Remote.IO 从 PCM 获取音频缓冲区,但原始数据太大而无法通过蜂窝网络(3G 网络)发送到远程端。我确实参考了一些文章,但大多数都建议将 file 转换为其他格式的文件。
有什么方法可以实时将音频缓冲区转换为 AAC 编码数据?
【问题讨论】:
标签: ios xcode audio core-audio audiounit
我正在使用 Remote.IO 从 PCM 获取音频缓冲区,但原始数据太大而无法通过蜂窝网络(3G 网络)发送到远程端。我确实参考了一些文章,但大多数都建议将 file 转换为其他格式的文件。
有什么方法可以实时将音频缓冲区转换为 AAC 编码数据?
【问题讨论】:
标签: ios xcode audio core-audio audiounit
您确实可以将音频缓冲区直接保存为 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 编码正常工作。
【讨论】:
AudioConverterFillComplexBuffer 的 AudioConvert 音频单元进行转换?