Блокировка видео для использования в AirPlay - как отключить?


#1

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

Есть предположение, что в коде где-то реализована функция которая блокирует вывод видео на внешние устройства.

Буду благодарен за любые идеи где искать, на что обратить внимание.


Функция "Повтор экрана" из пункта управления внутри приложения
#2

Попробуйте почитать это, вдруг поможет


#3

Благодарю! Буду читать.


#4

Вот что удалось выяснить:
если делать так: (брать видео по ссылке)

let url = URL(string: "https://content.jwplatform.com/manifests/vM7nH0Kl.m3u8")!
player = AVPlayer(url: url2)

телевизор показывает как и задумано,
а если вот так: (видео размещено локально на девайсе)

    let urlPath = Bundle.main.path(forResource: "IMG_0781", ofType: "MOV")!
    let urlPath = Bundle.main.path(forResource: "MOV09057", ofType: "mpg")!
    let urlPath = Bundle.main.path(forResource: " 1. Intro (0609) ", ofType: "mp4")!

    let url2 = URL(fileURLWithPath: urlPath)
    player = AVPlayer(url: url2)

то телевизор не показывает ни один из указанных urlPath.

Может есть идеи?

Проект тут