使用AVPlayer外部播放模式时从Apple TV发送的UIEvents

时间:2014-02-13 19:41:51

标签: ios objective-c ipad avplayer airplay

我有一个显示视频的应用,我们拦截所有暂停事件并阻止用户搜索视频对我们非常重要。

在设备上进行操作非常简单,我们不会暴露任何常规的'对用户的控制,在-remoteControlReceivedWithEvent:中,我们包含了我们真正感兴趣的所有事件。

但我们正在努力支持Apple TV。我们的理解是它应该将从Apple Remote发送的所有事件转发到我们的应用程序,如[0]所述:

  

使用AirPlay时,您的媒体可能正在主机设备的另一个房间播放。 AirPlay输出设备可能有自己的控件或响应Apple遥控器。为了获得最佳用户体验,您的应用应该监听并响应远程事件,例如播放,暂停和快进请求。启用远程事件还允许您的应用响应插入主机设备的耳机或耳塞上的控件。

然而,就我从调试和拔发中看到的情况而言,它并不适用于让AVPlayer处理显示视频的情况。我们实际上根本不做任何事情来制作视频在电视上播放,因为AVPlayer的allowsExternalPlayback属性默认为YES

如果我正确理解文档,在Apple TV上使用该模式时,只有来自设备的URL /数据被发送到Apple TV,而aTV会将解码和呈现部分发送给它自己,如每[1]:

  

外部播放模式是指通过AirPlay将视频数据发送到Apple TV等外部设备,以及基于迷你连接器的HDMI / VGA适配器,以原始保真度进行全屏播放。 AirPlay视频播放也被视为"外部播放"模式。

这可能解释了为什么我没有在设备上接收任何事件(例如,Apple的某个人认为,因为aTV做了繁重的工作并实际解码和渲染,设备上的应用程序不应该接收这些事件)

所以,我的问题基本上就是这个 - 我是否在森林里找不到任何明显的树,或者除了其中任何一种之外我没有退路:

  • 丑陋的黑客在播放位置和播放率上使用KVO,并惩罚用户作弊'
  • 自行重新实现整个视频渲染,将电视屏幕视为第二显示

任何指针都将非常感激。

[0] https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AirPlayGuide/EnrichYourAppforAirPlay/EnrichYourAppforAirPlay.html

[1] https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVPlayer_Class/Chapters/Reference.html#//apple_ref/occ/cl/AVPlayer

0 个答案:

没有答案