У меня есть приложение для захвата видео, и я хочу иметь возможность воспроизводить фоновую музыку во время записи аудио и видео.
Я могу добиться этого, если установлю категорию AVAudioSession
на PlayAndRecord
в didFinishLaunchingWithOptions
. Однако это вызывает сбой в звуке всякий раз, когда вид с камерой выходит или выходит из переднего плана, и от этого, по-видимому, невозможно избавиться: https://forums.developer.apple.com/message/74778#74778
Я могу жить с глюком, если он просто происходит, когда я начинаю/останавливаю запись видео, но это означает, что мне нужно изменить категорию AVAudioSession
с Ambient
на PlayAndRecord
при нажатии кнопки, и это тоже кажется невозможным.
Как изменить категорию AVAudioSession
?
Я пробовал это:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord
withOptions:AVAudioSessionCategoryOptionMixWithOthers
error:nil];
Но фоновая музыка останавливается, когда начинается запись.
После этого сообщения: AVCaptureSession и фоновый звук iOS 7
Я попытался деактивировать сеанс, а затем установить категорию:
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error];
[session setCategory:AVAudioSessionCategoryPlayAndRecord
withOptions:AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDefaultToSpeaker
error:nil];
[session setActive:YES error:&error];
Я также попытался прослушать AVAudioSessionRouteChangeNotification
и установить категорию в этом обработчике после деактивации сеанса. Но фоновая музыка всегда отключается, когда приложение начинает запись.
Почему я не могу изменить категорию AVAudioSession
?