bgo*_*son 8 avaudioplayer avaudiorecorder ios avaudiosession ios5
我有一个实时应用程序,估计有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);
}
Run Code Online (Sandbox Code Playgroud)
这可能有很多与录音设置无关的事情。
您想要回答的真正问题似乎是:什么会导致录音不发生?
audioRecorder 可能为零,或者 audioRecorderprepareToPlay 可能返回 NO。前者似乎更有可能。
传递给 initWithURL 的 url 可能格式错误: - 您是否通过使用 verseGUID、bRecordReference 值进行了测试?也许你的设备永远不会有一个坏的 verseGUID,但是没有发生记录的设备有一个 nil/空 verseGUID。这可能会导致文件名只是“.caf”。
你似乎有自己的类方法 [Utilities sharedInstance] 。出于某种原因,这是否可以在您的设备上工作,但不能在出现故障的设备上工作?如果是这样,您可能无意中要求在顶级目录中进行记录。
您能否将您拥有的测试人员纳入“测试版”列表?注册 TestFlight 或 Hockey Kit 之类的东西,让一个或多个未能记录的用户也注册,然后上传带有诊断的应用程序测试版,该测试版会在屏幕上显示一个对话框,并显示由此产生的“错误”。这可能是最明显的。我使用 testflightapp.com 只是因为它是我第一次尝试,它对我来说非常容易管理,对我的 Beta 测试人员来说也很轻松。
| 归档时间: |
|
| 查看次数: |
7136 次 |
| 最近记录: |