带有多个 AVPlayer 实例的 AirPlay

Posted

技术标签:

【中文标题】带有多个 AVPlayer 实例的 AirPlay【英文标题】:AirPlay with multiple instances of AVPlayer 【发布时间】:2013-11-05 19:50:26 【问题描述】:

在我的应用程序中,我有多个选项卡,每个选项卡上都有一个 AVPlayer 实例。但是,当我激活 AirPlay 时,“第一个玩家获胜”。这意味着当前活动选项卡上的播放器连接到 AirPlay,当我切换到另一个选项卡并按下播放时,什么也没有发生。因此,只有连接到 AirPlay 的第一个 AVPlayer 实例才能真正通过 AirPlay 播放,而其他选项卡上的播放器都不能正常工作。怎么办?

【问题讨论】:

出于好奇,为什么不为您的 AVPlayer 使用单例模式? @Marco:这是一种可能性,但我宁愿不必“手动”记住并恢复每个选项卡上每个玩家的状态,而是让单独的玩家为我这样做。 【参考方案1】:

解决方案很简单:当包含播放器的视图控制器出现时,将 AVPlayer 实例上的 allowsExternalPlayback 设置为 YES,在消失时将其设置为 NO

示例:

- (void)viewWillAppear:(BOOL)animated

    // _player is an instance of AVPlayer
    if ([_player respondsToSelector:@selector(setAllowsExternalPlayback:)]) 
        // ios 6+
        _player.allowsExternalPlayback = YES;
     else 
        // iOS 5
        _player.allowsAirPlayVideo = YES;
    

    [super viewWillAppear:animated];


- (void)viewWillDisappear:(BOOL)animated

    // _player is an instance of AVPlayer
    if ([_player respondsToSelector:@selector(setAllowsExternalPlayback:)]) 
        // iOS 6+
        _player.allowsExternalPlayback = NO;
     else 
        // iOS 5
        _player.allowsAirPlayVideo = NO;
    

    [super viewWillDisappear:animated];

享受吧。

【讨论】:

以上是关于带有多个 AVPlayer 实例的 AirPlay的主要内容,如果未能解决你的问题,请参考以下文章

AVPlayer / Airplay 按钮

AVPlayer 的音频音量超过 Airplay?

AVPlayer 不能与 AirPlay 一起使用

使用 AVPlayer 的 Airplay 并不总是有效。 “iPhone”选项在 Airplay 菜单中列出两次

AVPlayer 与 AWS Cookie 使用 AirPlay

使用 AVPlayer 的播放器控件中未显示 Airplay 按钮