【问题标题】:Is it possible to force AVPlayer stop playing video externally (on Apple TV)是否可以强制 AVPlayer 停止在外部播放视频(在 Apple TV 上)
【发布时间】:2013-06-26 16:03:01
【问题描述】:

我有一个通过 AVPlayer 通过 HTTP 播放视频的 iOS 应用程序。

我有 MPVolumeView,它允许选择播放设备以将当前播放流式传输到。

但现在我需要能够以编程方式停止视频流,并在 iPad 屏幕上的应用程序中继续在 AVPlayer 的视频层上播放。 (就像 MPVolumeView 的按钮一样,但以编程方式)

请帮帮我,我试图自己和谷歌的帮助下找到解决方案,但我无法解决这个问题:(

真的可以吗?

谢谢!

【问题讨论】:

    标签: ios avfoundation avplayer airplay


    【解决方案1】:

    在这种情况下,您不需要直接对多个显示器进行编程。您只需要告诉 iOS 的视频子系统停止使用其他显示器...

    AVPlayer 有一个属性allowsExternalPlayback,您可以将其设置为NO。这将禁用外部显示器上的播放。在您的应用程序中播放器的原始AVPlayerLayer 将继续播放。

    【讨论】:

    • 我试过了,视频播放在外接显示器上被禁用并继续在 iPad 屏幕上播放,但音频仍然通过外接显示器播放
    • 是的......我也遇到了这个问题。音频仍通过外部显示器播放。您找到解决方案了吗? @AlexanderTkachenko
    • @KarenAnne 不幸的是没有。我有一些想法,通过 AVPlayer 播放“视频”使用 AVAudioSession 播放声音,所以当我们禁用 allowExternalPlayback 时,AVAudioSession 使用它自己的设置并通过外部设备连续播放。我想也许还需要配置 AVAudioSession 来禁用播放。
    • 你们中有人找到解决方案了吗?我遇到了同样的问题,音频一直通过外部显示器播放......谢谢!
    【解决方案2】:

    首先,您必须阅读this 对多显示器编程的参考。

    但我认为在这种特定情况下,您正在寻找 [UIScreen screens] ,它返回 NSArrayUIScreen 对象。索引为 0 的UIScreen 是内部显示器,而索引为 1 的UIScreen 是 Apple TV 的显示器。从现在开始,根据this 文档及其示例,您只需要创建一个UIWindow,它具有您要显示的UIScreen 的屏幕属性。然后,您可以轻松地将图层、视图等添加到该 UIWindow。

    【讨论】:

    • 感谢Rickye的参考和帮助,这似乎是解决问题的关键,我会尝试使用它,也许它会解决我的问题。绝对值得研究!
    猜你喜欢
    • 2015-12-06
    • 2013-11-20
    • 2013-03-06
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多