ios - AVAudioRecorder - 正确的 MPEG4 AAC 录音设置

标签 ios ios5 avaudioplayer avaudiorecorder avaudiosession

我有一个实时应用程序,估计有 15% 的用户报告说记录功能不起作用。这在我们的测试设备上没有发生,但报告显示问题是 prepareToRecord 返回 NO。我找不到 AAC 格式的示例设置。我的任何设置都关闭了吗?应用需要 iOS5 并使用 ARC。

 AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryRecord error:nil];

NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
 [NSNumber numberWithInt:kAudioFormatMPEG4AAC], AVFormatIDKey,
 [NSNumber numberWithFloat:44100.0], AVSampleRateKey,
 [NSNumber numberWithInt:1], AVNumberOfChannelsKey,
 [NSNumber numberWithInt:AVAudioQualityHigh], AVSampleRateConverterAudioQualityKey,
 [NSNumber numberWithInt:128000], AVEncoderBitRateKey,
 [NSNumber numberWithInt:16], AVEncoderBitDepthHintKey,
 nil];

NSString *fileName = [NSString stringWithFormat:@"%@%@.caf", verseGUID, bRecordingReference ? @"_ref" : @""];
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@", [[Utilities sharedInstance] documentsDirectoryPath], fileName]];
NSError *error = nil;
audioRecorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:&error];
if([audioRecorder prepareToRecord]){
    [audioRecorder record];
}else{
    int errorCode = CFSwapInt32HostToBig([error code]);
    NSLog(@"Error: %@ [%4.4s])", [error localizedDescription], (char*)&errorCode);
}  

最佳答案

可能有很多与录制设置无关的事情。

您真正想要回答的问题似乎是:什么会导致录音不发生?

audioRecorder 可能为 nil 或者 audioRecorder prepareToPlay 可能返回 NO。前者似乎更有可能。

传递给 initWithURL 的 url 可能格式不正确: - 您是否通过使用 verseGUID、bRecordReference 值进行了测试?也许你的设备永远不会有一个坏的 verseGUID,但是没有记录发生的设备有一个 nil/空的 verseGUID。这可能导致文件名只是“.caf”。

您似乎有自己的类方法 [Utilities sharedInstance] 。由于某种原因,这是否可以在您的设备上工作,但不能在出现故障的设备上工作?如果是这样,您可能会要求在您无意的情况下记录在顶级目录中。

您能否将您拥有的测试人员列入“测试版”列表?注册 TestFlight 或 Hockey Kit 之类的东西,让一个或多个记录失败的用户也注册,然后上传一个带有诊断的应用程序测试版,在屏幕上显示一个带有结果“错误”的对话框。这可能是最明显的。我使用 testflightapp.com 只是因为它是我第一次尝试,它对我来说很容易管理,对我的 Beta 测试人员来说也很轻松。

关于ios - AVAudioRecorder - 正确的 MPEG4 AAC 录音设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11347760/

相关文章:

objective-c - 获取 UITabBarController 中选定选项卡的标题

iphone - 如何在 iCloud 中搜索上传的文件

ios - AVAudioplayer 播放声音列表,中间有可变的暂停

ios - 使用 OpenSsl 支持构建 Kivy-ios

iphone - 光泽按钮以编程方式设置颜色

iphone - EventKit 同步问题

iphone - 如何在 AVAudioPlayer 播放器对象中继承或存储额外信息

ios - 当我尝试设置SDWebImage时,pod安装不起作用

ios - CoreMidi 和外部 USB Controller

iphone - 我的应用程序在播放声音时崩溃