Ios 调整缓冲区大小会导致丢弃帧

Ios 调整缓冲区大小会导致丢弃帧,ios,swift,Ios,Swift,我从我的AVCaptureSession接收到每一帧的像素缓冲区,分辨率为4k,我需要将其调整为720p。我现在是这样做的: private func consumeVideoForStreaming(from sampleBuffer: CMSampleBuffer) { guard let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { print("Error acquirin

我从我的
AVCaptureSession
接收到每一帧的像素缓冲区,分辨率为4k,我需要将其调整为720p。我现在是这样做的:

  private func consumeVideoForStreaming(from sampleBuffer: CMSampleBuffer) {
    guard let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
      print("Error acquiring sample buffer")
      return
    }

    let context = CIContext()
    let image = CIImage(cvPixelBuffer: imageBuffer)
    let resizeFilter = CIFilter(name:"CILanczosScaleTransform")!
    let targetSize = CGSize(
      width: 1280,
      height:720
    )

    let scale = targetSize.height / 2160
    let aspectRatio = targetSize.width/(3840 * scale)

    // Apply resizing
    resizeFilter.setValue(image, forKey: kCIInputImageKey)
    resizeFilter.setValue(scale, forKey: kCIInputScaleKey)
    resizeFilter.setValue(aspectRatio, forKey: kCIInputAspectRatioKey)
    guard let outputImage = resizeFilter.outputImage else {
      return
    }

    var outputBuffer: CVPixelBuffer?
    let attrs = [
      kCVPixelBufferCGImageCompatibilityKey: kCFBooleanTrue,
      kCVPixelBufferCGBitmapContextCompatibilityKey: kCFBooleanTrue
    ] as CFDictionary

    let status = CVPixelBufferCreate(
      kCFAllocatorDefault,
      Int(targetSize.width),
      Int(targetSize.height),
      kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange,
      attrs,
      &outputBuffer
    )

    guard status == kCVReturnSuccess,
          let buffer = outputBuffer else {
      return
    }
    context.render(outputImage, to: buffer)

    // Do something with my resized buffer...
  }
这是可行的,但是速度太慢,以至于帧最终被丢弃。如何加快调整大小的速度?我还需要使用像素缓冲池吗