Swift AVPlayerViewController 添加 AirPlay

Posted

技术标签:

【中文标题】Swift AVPlayerViewController 添加 AirPlay【英文标题】:Swift AVPlayerViewController Add AirPlay 【发布时间】:2017-02-07 19:33:54 【问题描述】:

我正在尝试使用我的AVPlayerViewController 启用 AirPlay。在文档中:

https://developer.apple.com/reference/avkit/avplayerviewcontroller

说明

AVPlayerViewController 自动支持 AirPlay,但您需要执行一些项目和音频会话配置才能在您的应用程序中启用它。

Capabilities 标签下,我确实为音频、AirPlay 和画中画启用了背景模式。我创建了AVPlayerViewController,如下所示:

// Create the view controller and player
let moviePlayerViewController: AVPlayerViewController = AVPlayerViewController()
let moviePlayer = AVPlayer(url: videoUrl!)

moviePlayer.allowsExternalPlayback = true
moviePlayer.usesExternalPlaybackWhileExternalScreenIsActive = true

// Initialize the AVPlayer
moviePlayerViewController.player = moviePlayer

// Present movie player and play when completion
self.present(moviePlayerViewController, animated: false, completion: 
    moviePlayerViewController.player?.play()
)

我以为这两行

moviePlayer.allowsExternalPlayback = true
moviePlayer.usesExternalPlaybackWhileExternalScreenIsActive = true

会添加 AirPlay 支持,但我错了。我已经读到可以通过添加MPVolumeView 来使用 AirPlay,但那是用于自定义视频控制器,而不是内置的。任何帮助将不胜感激。

【问题讨论】:

***.com/questions/35771440/…的可能重复 MPVolumeView 用于自定义视频控制器,而不是内置控制器。 看看这个developer.apple.com/library/content/documentation/AudioVideo/… 你知道怎么做吗? 【参考方案1】:

您应该仍然可以使用MPVolumeView。只需使用以下内容:

    let volumeView = MPVolumeView()
    self.view.addSubview(volumeView)

或者如果您只想显示菜单,您可以使用:

    let volumeView = MPVolumeView(frame: CGRect(x: -100, y: 0, width: 0, height: 0))
    self.addSubview(volumeView)
    for view: UIView in volumeView.subviews 
        if let button = view as? UIButton 
            button.sendActions(for: .touchUpInside)
            volumeView.removeFromSuperview()
            break
        
    

这会将其置于当前视图之外,然后触发显示空中播放菜单的操作。

【讨论】:

我的计划是将 iPhone 屏幕共享到任何电视(Apple 或 samsung 表示支持 airPlay 的设备)。我该如何实现呢?

以上是关于Swift AVPlayerViewController 添加 AirPlay的主要内容,如果未能解决你的问题,请参考以下文章

AVPlayerViewController 不支持 iPhone 上的画中画

swift [Swift Notes]在学习Swift #Swift的同时收集笔记

Swift 反射

Swift入门系列--Swift官方文档(2.2)--中文翻译--About Swift 关于Swift

swift 示例BS swift.swift

swift swift_bug.swift