#objective-c
#objective-c
Вопрос:
У меня есть приложение, в котором я пытаюсь записывать голосовые и видеозаписи. Я могу сделать одно или другое, но не оба, и проблема, похоже, в моей AVAudioSession. Для того чтобы записать и воспроизвести аудио, я использую следующий код:
NSError *error = nil;
audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), amp;audioRouteOverride);
[audioSession setActive:YES error:amp;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, видео записывается; однако запись голоса не будет воспроизводиться должным образом. Есть идеи?
Ответ №1:
Проблема решена. Это была проблема с моей AVAudioSession в делегате приложения. Необходимо добавить некоторую логику if для перенастройки аудиосессии, если камера была запущена для записи фильмов