ios - iOS录音时如何将PCM缓存实时转为AAC数据?

标签 ios xcode audio core-audio audiounit

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

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

最佳答案

您确实可以将音频缓冲区直接保存为 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 编码正常工作。

关于ios - iOS录音时如何将PCM缓存实时转为AAC数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13705819/

相关文章:

iOS、MPNowPlayingInfoCenter 暂停/播放按钮不起作用?

swift - 我下载了一个使用 CocoaPods 的开源项目。我必须安装 CocoaPods 吗?

javascript - 从浏览器录制音频并实时可视化

c# - 防止.NET语音识别听到/识别计算机扬声器

ios - 我的音板应用程序在模拟器上播放声音,但不在设备上播放声音

ios - 在 Swift 中返回 self

ios - 在 API 中创建 if 条件时,如何修复 swift 代码中调用 Storyboard 的速度?

ios - swiftui 对成员 'navigationBarTitle' 的引用不明确

ios - objective-c 中的指定初始化器和便利初始化器以及如何正确创建它们并将它们绑定(bind)在一起

ios - 如何为所有 View Controller 创建通用的UITableView?