У меня есть приложение, в котором я пытаюсь записывать голосовые записи и видеозаписи.Я могу сделать одно или другое, но не оба, и проблема, кажется, моя AVAudioSession.Для записи и воспроизведения аудио я использую следующий код:
NSError *error = nil;
audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);
[audioSession setActive:YES error:&error];
Для захвата видео я использую UIImagePickerController:
- (BOOL)startCameraControllerFromViewController: (UIViewController*) controller usingDelegate: (id <UIImagePickerControllerDelegate, UINavigationControllerDelegate>) delegate
{
NSLog(@"AAVC startCameraControllerFromViewController");
if (([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == NO) || (delegate == nil) || (controller == nil))
{
return NO;
}
cameraUI = [[UIImagePickerController alloc] init];
[cameraUI setSourceType:UIImagePickerControllerSourceTypeCamera];
[cameraUI setAllowsEditing:NO];
[cameraUI setDelegate:delegate];
NSLog(@"cameraUI retainCount = %i", [cameraUI retainCount]);
AccessAndrewAppDelegate *AppDelegate = [[UIApplication sharedApplication] delegate];
if (AppDelegate.isMovie)
{
[cameraUI setMediaTypes:[[NSArray alloc] initWithObjects:(NSString *) kUTTypeMovie, nil]];
[cameraUI setVideoQuality:UIImagePickerControllerQualityTypeLow];
AppDelegate.isMovie = NO;
}
else
{
[cameraUI setMediaTypes:[[NSArray alloc] initWithObjects:(NSString *) kUTTypeImage, nil]];
}
[controller presentModalViewController:cameraUI animated:YES];
return YES;
}
Что происходит прикод AVAudioSession и при попытке записать видео затвор откроется, а затем закроется и остановится.Если я закомментирую конфигурацию AVAudioSession видео записи;однако запись голоса не будет воспроизводиться должным образом.Есть идеи?