【发布时间】:2016-12-09 02:41:49
【问题描述】:
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()
}
【问题讨论】:
-
你能在这里显示你的代码吗?以及屏幕上显示的播放器大小
-
@Horst 确定更新了问题。谢谢!
-
你能在 github 上放一个能重现问题的项目吗?
-
@RhythmicFistman 会尝试,但项目很复杂,因此需要一段时间来简化它,以便于调试。还看到了您对 ios 10 上 avplayer 问题的相关问题的回复。这可能是 ios 10 的错误,因为代码在 ios 9 和 8 上运行,但不再需要这些设备进行测试。
-
我有一个我认为是类似的问题。除了等待 5-10 秒之外,还有其他解决方法吗?
标签: ios video avplayer avplayerlayer