Можно ли заставить AVPlayer прекратить воспроизведение видео извне (на Apple TV)

У меня есть приложение iOS, которое воспроизводит видео через HTTP через AVPlayer.

У меня есть MPVolumeView, который позволяет выбрать устройство трансляции для потоковой передачи текущего воспроизведения.

Но теперь мне нужно иметь возможность программно останавливать потоковое видео и продолжать воспроизведение на видеослое AVPlayer в моем приложении на экране iPad. (Как кнопка MPVolumeView, но программно)

Пожалуйста, помогите мне, я пытался найти решение самостоятельно и с помощью Google, но я не могу решить эту проблему :(

Это действительно возможно?

Спасибо!


person Alexander Tkachenko    schedule 26.06.2013    source источник


Ответы (2)


Сначала вам нужно прочитать этот справочник по программированию нескольких дисплеев.

Но в этой конкретной ситуации, я думаю, вы ищете [UIScreen screens], который возвращает NSArray из UIScreen объектов. UIScreen с индексом 0 — это внутренний дисплей, а тот, что с индексом 1 — это дисплей Apple TV. Отныне согласно эта документация и ее примеры, вам нужно только создать UIWindow, у которого есть свойство экрана UIScreen, на котором вы хотите отображать. Затем вы можете легко добавлять слои, представления и т. д. в этот UIWindow.

person Rickye    schedule 26.06.2013
comment
Спасибо за ссылки и помощь Rickye, кажется, это ключ к решению, я попробую его использовать, и, возможно, это решит мою проблему. Это определенно стоит исследовать! - person Alexander Tkachenko; 27.06.2013

В этом сценарии вам не нужно напрямую программировать несколько дисплеев. Вам просто нужно сказать видеоподсистеме iOS, чтобы она прекратила использовать другой дисплей...

AVPlayer имеет свойство allowsExternalPlayback, для которого можно установить значение NO. Это отключит воспроизведение на внешнем дисплее. Воспроизведение продолжится на оригинальном проигрывателе AVPlayerLayer в вашем приложении.

person spinosa    schedule 08.08.2013
comment
Я пробовал это, воспроизведение видео отключено на внешнем дисплее и продолжает воспроизводиться на экране iPad, но звук по-прежнему воспроизводится через внешний дисплей. - person Alexander Tkachenko; 09.08.2013
comment
Ага... Я тоже сталкиваюсь с этой проблемой. Звук по-прежнему воспроизводится через внешний дисплей. Вы нашли решение для этого? @АлександрТкаченко - person KarenAnne; 08.07.2016
comment
@KarenAnne К сожалению, нет. У меня есть некоторые мысли, что воспроизведение «видео» через AVPlayer использует AVAudioSession для воспроизведения звука, поэтому, когда мы отключаем AllowExternalPlayback, AVAudioSession использует свои собственные настройки и непрерывно воспроизводится через внешнее устройство. Я думаю, может быть, также необходимо настроить AVAudioSession для отключения трансляции. - person Alexander Tkachenko; 08.07.2016
comment
Кто-нибудь из вас нашел решение для этого? У меня та же проблема, что звук продолжает воспроизводиться через внешний дисплей... спасибо! - person adams.s; 23.09.2020