Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-从CMSampleBuffer获取kCMSampleBufferAttachmentKey_DroppedFrameReason_Ios_Swift_Avfoundation - Fatal编程技术网

Ios Swift-从CMSampleBuffer获取kCMSampleBufferAttachmentKey_DroppedFrameReason

Ios Swift-从CMSampleBuffer获取kCMSampleBufferAttachmentKey_DroppedFrameReason,ios,swift,avfoundation,Ios,Swift,Avfoundation,我试图理解为什么我的AVCaptureOutput正在删除帧。在captureOutput(\uoutput:AVCaptureOutput,didDrop-sampleBuffer:CMSampleBuffer,from-connection:AVCaptureConnection)delegate方法中,我得到了一个CMSampleBuffer,它应该包含一个附件,解释删除帧的原因() 原因可能是以下原因之一: kCMSampleBufferDroppedFrameReason_FrameW

我试图理解为什么我的AVCaptureOutput正在删除帧。在
captureOutput(\uoutput:AVCaptureOutput,didDrop-sampleBuffer:CMSampleBuffer,from-connection:AVCaptureConnection)
delegate方法中,我得到了一个
CMSampleBuffer
,它应该包含一个附件,解释删除帧的原因()

原因可能是以下原因之一:

kCMSampleBufferDroppedFrameReason_FrameWasLate // "FrameWasLate"
kCMSampleBufferDroppedFrameReason_OutOfBuffers // "OutOfBuffers"
kCMSampleBufferDroppedFrameReason_Discontinuity // "Discontinuity"
从文档中我们真的不清楚如何得到这个值。我尝试使用
CMGetAttachment
,但这会返回
CMAttachmentMode
aka
UInt32

func captureOutput(_ output: AVCaptureOutput, didDrop sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
  var reason: CMAttachmentMode = 0
  CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_DroppedFrameReason, &reason)
  print("reason \(reason)") // 1
}

我真的不知道如何将UInt32与CFString常量匹配

我愚蠢地没有看到正确的输出:

var mode: CMAttachmentMode = 0
let reason = CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_DroppedFrameReason, &mode)
print("reason \(String(describing: reason))") // Optional(OutOfBuffers)