AVPlayer 播放视频时,MPNowPlayingInfoCenter 的 nowPlayingInfo 未显示

3
我正在开发一个具有视频流功能的应用程序。 我使用AVPlayer来播放视频,可以在设备上或使用AirPlay进行流媒体传输。 当您使用AirPlay时,您可以锁定屏幕,视频仍会继续播放。 在设备的主屏幕上,您将获得控件:进度条、播放/暂停、后退/前进。
到此为止都很好。现在我想显示一些关于正在播放的视频的信息。 我阅读了很多关于MPNowPlayingInfoCenter的资料,看起来非常简单明了。 然而,当我设置nowPlayingInfo时,在主屏幕上没有任何设置。
我不知道我做错了什么。 我在AVPlayer中有一个设置不允许我这样做吗? 我设置playingInfo的时间是错误的吗?(我尝试在播放之前、加载流之后、开始流之后等不同的时间设置)
下面的代码被执行了,但它并没有在锁屏界面上设置nowPlayingInfo:
 MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = [MPMediaItemPropertyTitle: "My Video Title"]

视频和音频在锁屏状态下通过AirPlay播放是否正常?您如何配置AVAudioSession?您是否曾经调用过UIApplication.sharedApplication().beginReceivingRemoteControlEvents() - Hélène Martin
是的,一切都正确播放。在我更新MPNowPlayingInfoCenter之前,我确实调用了UIApplication.sharedApplication().beginReceivingRemoteControlEvents() - Bocaxica
我遇到了一个问题,即设置“nowPlayingInfo”有时只会更新锁定屏幕。 我发现在设置它的行上放置断点(您包括的代码行)可以确保它始终更新。我无法解释原因,不过或许你可以试一下? - Hélène Martin
1个回答

0
你可以使用 AVPlayerViewController 在应用中播放视频。它需要 AVPlayer。然后,你可以将 AVPlayerViewController 的 updatesNowPlayingInfoCenter 设置为 false
    let playerController = AVPlayerViewController()
    var player: AVPlayer = AVPlayer(url: URL(string: "url_string")!)
    playerController.player = player
    playerController.updatesNowPlayingInfoCenter = false
    present(playerController, animated: true) {
        player.play()
    }

此外,您需要设置MPNowPlayingInfoCenter.default().nowPlayingInfo以显示您想要展示的信息。

这部分解决了我的问题,但设置MPNowPlayingInfo并没有更新任何内容,实际上现在即使设置了AVAudioSession.sharedInstance().setActive(true),NowPlayingInfo也根本不会出现。 - Pedro Cavaleiro

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