AVPlayer удаляет фоновую музыку

Я использую giffycat для декодирования, хранения и воспроизведения gif в моем приложении. Я делаю это так, чтобы он мог легко загрузить gif в ячейку UICollectionView, поэтому я решил, что для каждой модели gif будет свой AVPlayer. Я заметил, что просто создав AVPlayer, показанный ниже, звук из других приложений убит! Раздражает как пользователя, так и создателя!

// Create an AVURLAsset with an NSURL containing the path to the video
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[NSURL URLWithString:_mp4] options:nil];
// Create an AVPlayerItem using the asset
AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:asset];
_player = [AVPlayer playerWithPlayerItem:item]; //if this line is commented out, I hear audio, else audio from Spotify is quickly killed...

Поскольку эти видеоролики - просто gif, мне интересно, есть ли способ отменить назначение аудио сессии. Я мало что знаю об этом. помогите!

Ответ 1

Оказывается, ответ довольно прост, после небольшого поиска в Google и документации... Решение

// audio session
let audioSession = AVAudioSession.sharedInstance()
try! audioSession.setCategory(AVAudioSessionCategoryAmbient,
  withOptions: AVAudioSessionCategoryOptions.MixWithOthers)

Упс, просто понял, что я отправляю свой вопрос в objC и отвечаю в Swift. Ну круто, потому что эта жизнь иногда.

AudioSession - это синглтон для всего вашего приложения, чтобы управлять тем, как ваше приложение смешивается с другими звуками системы и других приложений! Звуковой сеанс по умолчанию -

  • воспроизведение включено, запись отключена.
  • Когда пользователь перемещает тихий переключатель в "тихий", ваш звук отключается.
  • когда пользователь нажимает кнопку sleep/wake для блокировки экрана или периода автоблокировки, ваш звук отключается.
  • при запуске вашего звука звук другого звука на устройстве (музыке) отключен.

CategoryAmbient сообщает, что не делать 4

Хорошая документация! https://developer.apple.com/library/ios/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/ConfiguringanAudioSession/ConfiguringanAudioSession.html#//apple_ref/doc/uid/TP40007875-CH2-SW1

Ответ 2

Установите свойство audioMix для AVPlayerItem на ноль, прежде чем создавать из него AVPlayer, чтобы удалить звуковую дорожку из актива.