我有那个功能:

func retrievePixelBufferToDraw() -> CVPixelBuffer? {
  let time = self.playerItem!.currentTime()

  // this line is just added to make sure I can call something on self.videoOutput!
  self.videoOutput!.hasNewPixelBuffer(forItemTime: time)

  // raises EXC_BAD_ACCESS
  let pixelBuffer = self.videoOutput!.copyPixelBuffer(forItemTime: time, itemTimeForDisplay: nil)
  return pixelBuffer
}


听起来EXC_BAD_ACCESS来自访问已释放的变量,但是我真的不明白它在这里如何发挥作用,因为在调用失败的行之前,我已经检查了所有正在使用的变量。

最佳答案

很简单..您的AVPlayer不会同时抛出错误EXC_BAD_ACCESS来获取视频输入,请在播放时(player.play())尝试为其提供QuickTimeMovie,始终需要视频输入。

最后,player不应为nill(没有正确的playerItem

关于swift - AVPlayerItemVideoOutput.copyPixelBuffer失败,显示EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38340562/

10-13 07:09