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

时间:2018-05-24 00:37:11

标签: ios avfoundation avplayer avasset avurlasset

以下是启动视频的代码:

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," 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]

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

enter image description here

1 个答案:

答案 0 :(得分:0)

原来视频,视图或控制器设置没有问题。由于共享模式audioSession,视频已加载并准备播放并暂停。之前已将其设置为.record以处理另一个应用用例。

解决方案是恢复包含播放的原始audioSession模式,视频播放时不会出现任何问题。