У меня есть приложение, которое может показывать видео, и мне хотелось бы следующее поведение.AVAudioSession переключение между смешанными и не смешанными режимами
Когда видео сначала появляется на экране и начинает воспроизводиться, его аудио должно смешиваться с аудио из других приложений, которые могут уже воспроизводиться. Например, если пользователь прослушивает Spotify, они должны слышать звук из Spotify и воспроизводимого видео.
Если пользователь удаляет определенную кнопку, звук из других приложений должен быть отключен, чтобы воспроизводиться только звук из видео.
Если пользователь снова нажал кнопку, звук из других приложений должен возобновиться, а аудиосигнал видео вместе со звуком из других приложений должен снова перемещаться.
По сути, я хочу, чтобы иметь возможность переключать аудио-режим моего приложения между «смешиванием» и «без смешивания».
Вот какой код, который показывает, как я изменяю AVAudioSession
, чтобы попытаться получить эту функцию.
Включение смешивания режима
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryAmbient
withOptions:AVAudioSessionCategoryOptionMixWithOthers
error:nil];
[session setActive:YES withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
Выключение смешивания Режим
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback
withOptions:0
error:nil];
[session setActive:YES withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
Проблема, что у меня в том, что включение микширования звука после того, как ранее его выключения, Безразлично Не сообщайте другим приложениям, что они могут снова возобновить воспроизведение звука. Я действительно очень хочу этого поведения. Это то, что просто невозможно.
Кажется, что единственный способ уведомить другие приложения, которые они могут возобновить, - это установить сессию звукового сеанса моего приложения как «неактивную». К сожалению, при воспроизведении видео появляется предупреждение о том, что я должен прекратить воспроизведение звука перед отключением аудио сессии. Это также приводит к нарушению AVPlayer, поскольку он больше не может воспроизводить звук.
Кто-нибудь знает, как обойти эти проблемы? Любое решение будет приветствоваться, даже те, которые довольно сложны или используют частный API.
Проблема в том, что я не могу включить сессию аудио в неактивную во время воспроизведения видео. AVPlayer не крут с этим, и он не будет воспроизводить звук впоследствии. Вам нужно снова приостановить и воспроизвести видео, чтобы оправиться от этого. – Antonio