AVPlayer 处于 ReadyToPlay 状态但无法开始播放

Posted

技术标签:

【中文标题】AVPlayer 处于 ReadyToPlay 状态但无法开始播放【英文标题】:AVPlayer is in the ReadyToPlay status but unable to start a playback 【发布时间】:2018-05-24 00:37:10 【问题描述】:

这是我开始视频的代码:

let videoURL = NSURL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
let playerAV = AVPlayer(url: videoURL! as URL)
let playerLayerAV = AVPlayerLayer(player: playerAV)
playerLayerAV.frame = ...
self.view.layer.addSublayer(playerLayerAV)
playerAV.play()

我可以看到视频预览,我还可以看到它正在加载,我什至可以移动滑块并看到预览正在更改为我选择的时间。但是,如果我点击播放 - 什么都不会发生。我尝试手动按下“播放”按钮,我尝试以编程方式调用.play,“播放”按钮的状态变为“||”但随后立即切换回“>”。

我还在跟踪与播放器状态相关的调试信息,并注意到以下内容。当我创建一个播放器时,状态如下:

Status: ReadyToPlay
TimeControl: WaitingToPlayAtSpecifiedRate
ReasonToWait: AVPlayerWaitingToMinimizeStallsReason
Time: 0/1 = 0.000
Rate: 1
Loaded Time Ranges: [Location=0,Length=0]

它几乎立即改变了它的 TimeControl: Paused 和 Rate: 0:

Status: ReadyToPlay
TimeControl: Paused
ReasonToWait:
Time: 0/1 = 0.000
Rate: 0
Loaded Time Ranges: [Location=0,Length=0]

在这两种情况下,当 UI 显示视频已完全加载并准备好播放时,它显示 playerItem.LoadedTimeRanges 有一个元素但长度和位置为 0。

【问题讨论】:

【参考方案1】:

事实证明,视频、视图或控制器设置没有问题。由于共享audiosession 的模式,视频已加载并准备好播放并立即暂停。它之前设置为 .record 以处理另一个应用程序用例。

解决方案是恢复原始audioSession 模式,包括播放,视频将毫无问题地播放。

【讨论】:

以上是关于AVPlayer 处于 ReadyToPlay 状态但无法开始播放的主要内容,如果未能解决你的问题,请参考以下文章

AVPlayer 空白视频:播放声音但没有视频

处于暂停状态时如何强制 AVPlayer 暂停缓冲?

由于间隙,AVPlayer 流在后台停止 [关闭]

在 iOS 7 和 8 中使用 AVPlayer 进行远程控制

搜索栏处于活动状态时,状态栏图标变为黑色

Java面试题小集萃