iOS 6 上的 RemoteIO 和录制 AAC

Posted

技术标签:

【中文标题】iOS 6 上的 RemoteIO 和录制 AAC【英文标题】:RemoteIO and Recording AAC on iOS 6 【发布时间】:2012-10-31 19:34:19 【问题描述】:

是否有人使用 RemoteIO 在 ios 6 上录制 AAC 音频?我注意到,当我这样做时,它会在中断时终止媒体服务器,并且我的中断回调永远不会在 iOS 6.0 上调用。

此外,由于媒体服务器出现故障,因此恢复有点困难。

有其他人看到或解决它吗?

【问题讨论】:

在我的 iOS 6 iPhone 5 测试设备上,确实为 kAudioSessionBeginInterruption 调用了 AudioSessionInterruptionListener 回调。 希望它对我有用。即使设置了一个interruptListenser也不会被调用......可能是因为mediaserverd在它到达回调之前就崩溃了。想知道我的设置是否有什么奇怪的地方导致它在中断时崩溃。你在你的应用中使用 RemoteIO 吗? 是的,我正在使用 RemoteIO 进行播放和录制音频会话。但该应用程序正在录制严格的原始音频。没有编解码器。 是的,它与编解码器有关。当我不使用 ExtAudioFile(包含转换器)时,它会遇到中断。哦。 【参考方案1】:

问题解决了。使用软件编解码器:

// specify codec
UInt32 codec    = kAppleSoftwareAudioCodecManufacturer;
int codecSize   = sizeof(codec);
status          = ExtAudioFileSetProperty(recorderState.audioFile,
                                          kExtAudioFileProperty_CodecManufacturer,
                                          codecSize,
                                          &codec);

在我使用 kAppleHardwareAudioCodecManufacturer 之前...显然硬件编解码器无法处理中断。希望其他人觉得这很有用!

【讨论】:

【参考方案2】:

我也有类似的问题。我正在尝试使用 remoteio 录制 AAC 音频,原因与您在此处描述的几乎相同:

http://lists.apple.com/archives/coreaudio-api/2012/Oct/msg00135.html

我目前的问题甚至不是中断。如果我处置了我的音频单元并将我的音频会话设置为在移动到后台时处于非活动状态,当我在应用重新加载时尝试重新激活我的会话时,媒体服务器仍然会被终止。

我即将死去的基本流程是这样的: - 设置一个活动的音频会话进行录制 - 设置音频单元和文件,为用户按下“录制”按钮做准备 - 用户后台应用程序,以拆除我处理音频单元的所有内容并停用我的会话,但此时我不清理我的 extaudiofile - 我打开语音备忘录,然后立即关闭它 - 重新打开我的应用程序并创下纪录。 - 当我尝试将会话设置为活动时,mediaserverd 死了。切换到软件编解码器并没有解决它!

如果您对这种疯狂有更多了解,我很想听听您的发现。

谢谢。

【讨论】:

以上是关于iOS 6 上的 RemoteIO 和录制 AAC的主要内容,如果未能解决你的问题,请参考以下文章

iOS RemoteIO - AudioUnitAddRenderNotify 回调

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

RemoteIO 录制的音频文件为静音或 4KB

如何在 iPhone 的 Core Audio (Audio Unit/ Remote IO) 中将录制的声音更改为男人的声音

带有 RemoteIO 的虚拟仪器应用程序录音功能

AAC 格式的 xCode 录制不起作用