我有一个实时应用程序,估计有 15% 的用户报告记录功能不起作用。我们的测试设备上没有发生这种情况,但报告显示问题在于prepareToRecord 返回“否”。我无法找到 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 可能为零,或者 audioRecorderprepareToPlay 可能返回 NO。前者似乎更有可能。
传递给 initWithURL 的 url 可能格式错误:
- 您是否通过使用 verseGUID、bRecordReference 值进行了测试?也许你的设备永远不会有一个坏的 verseGUID,但是没有发生记录的设备有一个 nil/空 verseGUID。这可能会导致文件名只是“.caf”。
你似乎有自己的类方法 [Utilities sharedInstance] 。出于某种原因,这是否可以在您的设备上工作,但不能在出现故障的设备上工作?如果是这样,您可能无意中要求在顶级目录中进行记录。
您能否将您拥有的测试人员纳入“测试版”列表?注册 TestFlight 或 Hockey Kit 之类的东西,让一个或多个未能记录的用户也注册,然后上传带有诊断的应用程序测试版,该测试版会在屏幕上显示一个对话框,并显示由此产生的“错误”。这可能是最明显的。我使用 testflightapp.com 只是因为它是我第一次尝试,它对我来说非常容易管理,对我的 Beta 测试人员来说也很轻松。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)