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 секунды "слишком поздно"), что может быть проблемой, если вы полагаетесь на то, что они происходят в правильном порядке с другими механизмами. в вашем приложении.

Другие вопросы по тегам