使用 iPod 录制和播放音频

Posted

技术标签:

【中文标题】使用 iPod 录制和播放音频【英文标题】:Recording and playing audio with iPod 【发布时间】:2012-05-13 12:24:40 【问题描述】:

我正在尝试在通用应用中录制和播放音频。 AVAudiosession 配置为:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error: nil]; 
UInt32 category = kAudioSessionCategory_PlayAndRecord;  
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category);

这适用于带有内置麦克风的设备。但在第三代 iPod 中,我遇到了随机的不良行为。有时一切正常,有时只有在插入带有集成麦克风的耳机时才会发生。在这种情况下,没有耳机是无法在应用中听到任何声音的。

【问题讨论】:

【参考方案1】:

第三代 iPod Touch 没有内置麦克风。拥有一个的唯一方法是用麦克风插入耳机。 唯一带有内置麦克风的 iPod Touch 是第 4 代。

您可以检查 inputRecording 是否可用:

UInt32 propertySize, micConnected;
AudioSessionGetProperty(kAudioSessionProperty_AudioInputAvailable, &propertySize, &micConnected);

【讨论】:

谢谢戴夫,但这并没有解决我的问题。问题是当我将音频类别设置为 kAudioSessionCategory_PlayAndRecord 以允许在 iPod 第三代中录制时,我失去了外部扬声器的声音。我正在检测设备型号和麦克风插入/拔出,并尝试重置音频会话类别,但无法恢复扬声器声音。有什么线索吗? @LoDani 在第三代 iPod Touch 上,当您获得 kAudioSessionProperty_AudioInputAvailable 时的结果是什么?拔下耳机时出现您的问题? 无论耳机是否连接,它都会返回 true (micConnected != 0)。但是我得到了正确的结果,要求 [[AVAudioSession sharedInstance] inputIsAvailable]。是的,当我在录制后拔下耳机时出现了我的问题。我在检测到拔出后尝试更改 AudioCategory 和 AudioRoute 属性,但没有结果。 @LoDani 如果此链接对您没有帮助,您应该在 Apple 开票。也许这是一个错误。 developer.apple.com/library/IOs/ipad/#documentation/Audio/…

以上是关于使用 iPod 录制和播放音频的主要内容,如果未能解决你的问题,请参考以下文章

AVAudioSessionCategoryPlayAndRecord 和 iPod 音频播放

修改 SpeakHere 以录制设备上播放的音频

使用 AVAssetWriter 和 AVAssetReader 进行音频录制和播放

在设备锁定时播放 iPod 库中的音频

如何在播放时处理 ipod 库音频文件原始数据

使用 NAudio 录制和播放音频