swift - AVPlayerItemVideoOutput.copyPixelBuffer 因 EXC_BAD_ACCESS 失败

标签 swift runtime-error allocation

我有这个功能:

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/

相关文章:

objective-c - Swift 相当于 valueForKey :

c++ - 删除指向自动变量的指针

c++ - 为什么在这样的递归代码中避免内存分配/解除分配并不能节省运行时间?

swift - UI 测试删除文本字段中的文本

ios - 样式 ActionSheet 的 UIAlertController 显示在状态栏下方

ios - 如何获取通知以将我带到所需的 viewController?

java - 将运行时错误的堆栈跟踪打印到文件中

cassandra - 将数据插入 Cassandra 时出错

c++ - 避免使用模板分配抽象类型

ios - 如何在iOS中将NSObject分配到其自己的虚拟内存页面上?