AVAudioPlayer и AirPlay - возможно?
Я пытаюсь выяснить, можно ли отключить поддержку AirPlay с помощью AVAudioPlayer
учебный класс.
Из того, что я прочитал:
AirPlay - это технология, которая позволяет вашему приложению передавать аудио на Apple TV и на сторонние динамики и ресиверы AirPlay. Поддержка AirPlay встроена в
AV Foundation
рамки и томуCore Audio
семейство рамок. Любой аудиоконтент, который вы воспроизводите с помощью этих платформ, автоматически получает право на распространение AirPlay. Когда пользователь выбирает воспроизведение аудио с помощью AirPlay, система автоматически направляет его. [ Ссылка ]
На основании этой информации; он должен работать с AVAudioPlayer, поскольку он является частью AVFoundation
фреймворк; но я не могу найти документацию, подтверждающую это предположение.
Я также нашел некоторую документацию, говорящую, что это может быть сделано с MPMoviePlayerViewController
:
Поддержка воспроизведения видео с помощью AirPlay включена в
MPMoviePlayerController
учебный класс. Эта поддержка позволяет воспроизводить видео на основе оборудования с поддержкой AirPlay, например Apple TV. КогдаallowsAirPlay
свойство активаMPMoviePlayerController
объект установлен вYES
и устройство находится в диапазоне оборудования с поддержкой AirPlay, проигрыватель фильмов предоставляет пользователю элемент управления для отправки видео на это оборудование. [ Ссылка ]
Похоже, здесь есть противоречивая информация. Кто-нибудь знает, возможно ли его использовать? AVAudioPlayer
направить на AirPlay или мы вынуждены использовать MPMoviePlayerController
учебный класс?
Спасибо большое.
3 ответа
В ответ на мой собственный вопрос. Похоже, что простой способ добавить пользовательский контроллер громкости упоминается здесь: [ ref ], и он будет отлично работать с MPAudioPlayer
, Это просто вопрос позиционирования.
Это довольно легко с Interface Builder, так что вы можете легко использовать Auto Layout. Поместите где-нибудь, где вы хотите, объект UIView на ваш главный вид, затем создайте подкласс MPVolumeView и используйте этот пользовательский класс для вашего объекта UIView.
и подкласс класса VolumeView MPVolumeView
import UIKit
import MediaPlayer
class VolumeView: MPVolumeView {
convenience init() {
self.init()
}
override func drawRect(rect: CGRect) {
self.showsVolumeSlider = false
self.layer.cornerRadius = 10.0
self.clipsToBounds = true
}
}
Да, AVAudioPlayer работает с AirPlay. Однако есть особенность, заключающаяся в том, что такие события, как audioPlayerDidFinishPlaying, корректируются по задержке (т.е. с точки зрения вашего приложения они происходят на 2 секунды "слишком поздно"), что может быть проблемой, если вы полагаетесь на то, что они происходят в правильном порядке с другими механизмами. в вашем приложении.