我有这个功能:
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/