This question有同样的问题,但解决方案不起作用 .
AVPlayer
有时会播放一个空白视频:声音但没有视频 .
播放空白视频时,我们打印了播放器的框架和状态 . 框架非零并且已正确设置 . 状态也是 readyToPlay
. play
函数也在主线程上调用 .
换句话说,播放器层的帧是有效的,并且播放器也准备好播放 . 然而,即使声音确实存在,也没有视频出现 .
问题似乎是时间问题 . 如果我们在播放视频前等待5-10秒,视频每次都能正常工作 .
此问题出现在iOS 10上,而不是iOS 8或9上 .
Apple论坛上的This thread表明它可能是与 AVVideoCompositionCoreAnimationTool
相关的错误,我们也会使用它 .
有解决方案吗
这种情况在iPhone 7设备上比在iPhone 5s设备上更常发生 .
码:
fileprivate func playVideo(_ videoURL: String, prompt: String) {
// Show <playerView>
playerView.isHidden = false
// Use new video in player
playerItem = AVPlayerItem(url: URL(fileURLWithPath: videoURL))
print("STATUS: \(player.status == AVPlayerStatus.readyToPlay). FRAME: \(playerLayer.frame). MAIN THREAD: \(Thread.isMainThread)")
player.replaceCurrentItem(with: playerItem)
// Start playing video
player.seek(to: kCMTimeZero)
player.actionAtItemEnd = .none
player.play()
}
2 回答
我想你需要玩AVPlayerViewController或AVPlayerLayer .
来自Apple doc:
如果有人遇到此问题,问题似乎与iOS错误有关 . iOS 8/9设备上不会出现此问题,仅适用于新的iOS 10设备 . 从iOS 10.2开始,问题就消失了 .
不幸的是,仍然没有针对10.0.x或10.1.x的编程解决方案 .