Есть готовый проект, который мне достался в поддержку.
Задача реализовать кнопку AirPlay для трансляции видео из приложения на внешний телевизор.
Видео предварительно скачивается с сервера и хранится на устройстве.
Стандартно трансляция реализуется таким вот кодом:
player?.allowsExternalPlayback = true
player?.usesExternalPlaybackWhileExternalScreenIsActive = true
if #available(iOS 11.0, *) {
let routerPickerView = AVRoutePickerView(frame: CGRect(x: 100, y: 30, width: 20, height: 20))
self.addSubview(routerPickerView)
routerPickerView.tintColor = .red
routerPickerView.activeTintColor = .green
if #available(iOS 13.0, *) {
routerPickerView.prioritizesVideoDevices = true
}
} else {
// Fallback on earlier versions
}
В итоге добился что на телевизор транслируется только аудио, если
player?.allowsExternalPlayback = false
а если true то видео с телефона пропадает, но на телевизоре не появляется.
При этом если плееру подставлять для проигрывания не файл с девайса а URL с адресом из интернета с видео то на телевизоре играет как положено.
Есть предположение, что в коде где-то реализована функция которая блокирует вывод видео на внешние устройства.
Буду благодарен за любые идеи где искать, на что обратить внимание.