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

Cra*_*lot 5 video ios avplayer avplayerlayer

这个问题有同样的问题,但解决方案不起作用。

AVPlayer有时扮演一个空白视频:有声音,但没有视频。

在播放空白视频时,我们打印了播放器的帧和状态。帧不为零并且设置正确。状态也是readyToPlay。该play函数也在主线程上调用。

换句话说,播放器层的帧有效,播放器也准备好播放。然而没有视频出现,即使有声音。

这个问题似乎是一个时间问题。如果我们在播放视频前等待 5-10 秒,则视频每次都能正常播放。

此问题出现在 iOS 10 上,而不是 iOS 8 或 9。

这个线程在苹果论坛上表明,它可能与一个bug AVVideoCompositionCoreAnimationTool,我们也可以使用。

任何解决方案?

与 iPhone 5s 设备相比,这种情况在 iPhone 7 设备上发生的频率更高。

代码:

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()
}
Run Code Online (Sandbox Code Playgroud)

Cra*_*lot 1

如果有人遇到此问题,该问题似乎与 iOS 错误有关。该问题不会出现在 iOS 8/9 设备上,仅出现在新的 iOS 10 设备上。从 iOS 10.2 开始,这个问题就消失了。

不幸的是,仍然没有针对 10.0.x 或 10.1.x 的编程解决方案。