Swift AVPlayerViewController添加AirPlay

6
我正在尝试在我的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,但这仅适用于自定义视频控制器而不是内置的控制器。非常感谢您的帮助。


可能是 https://dev59.com/CpTfa4cB1Zd3GeqPUbIP 的重复问题。 - axl coder
MPVolumeView 用于自定义视频控制器,而不是内置的控制器。 - Mike Walker
请查看此链接:https://developer.apple.com/library/content/documentation/AudioVideo/Conceptual/AirPlayGuide/EnrichYourAppforAirPlay/EnrichYourAppforAirPlay.html#//apple_ref/doc/uid/TP40011045-CH6-SW1 - axl coder
你找到怎么做了吗? - Sergey Didanov
2个回答

3
您仍然可以使用 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
        }
    }

这将把它放在当前视图之外,然后触发显示Air Play菜单的操作。

我的计划是将iPhone屏幕共享到任何电视上(无论是苹果还是三星,只要支持AirPlay)。我该如何实现这个功能? - Jamshed Alam

1

现在,你应该没有问题做到这一点。

(1) 在 功能 选项卡下,启用音频背景模式。

(2) 使用您的

var ezPlayer: AVPlayerViewController!

仅仅

    ezPlayer.showsPlaybackControls = true
    ezPlayer.player = AVPlayer(url: ... )

    ezPlayer.player!.allowsExternalPlayback = true
    ezPlayer.player!.usesExternalPlaybackWhileExternalScreenIsActive = 

你应该不会遇到任何问题。构建到设备上。假设你在一个可用的wifi网络中,有苹果电视和苹果笔记本电脑,airplay图标将出现并正常工作。

如今已经没有必要使用MPVolumeView了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接