swift - 在多个线程上处理实时照片

标签 swift core-image phlivephoto

我正在使用 .frameProcessor 处理 PHLivePhoto 来修改每一帧。帧似乎是按顺序处理的,这很慢。我可以让 PHLivePhotoEditingContext.frameProcessor 来利用多个核心吗?

func processLivePhoto(input: PHContentEditingInput) {
    guard let context = PHLivePhotoEditingContext(livePhotoEditingInput: input)
        else { fatalError("not a Live Photo editing input") }
    context.frameProcessor = { frame, _ in
        let renderedFrame = expensiveOperation(using: frame.image)
        return renderedFrame
    }
    // ...logic for saving
}

最佳答案

在这种情况下,恐怕无法并行化帧处理。你必须记住:

  • 视频帧需要按顺序写入。
  • 并行处理的帧越多,需要的内存就越多。
  • Core Image 是在 GPU 上处理帧,它通常一次只能处理一帧。
  • 您的 expensiveOperationframeProcessor 中并没有真正发生无论如何阻止,因为实际渲染是由该范围之外的框架处理的。
  • 关于swift - 在多个线程上处理实时照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58236594/

    相关文章:

    ios - Apple Live Photo 文件格式

    swift - Spotify 续订 session fatal error : unexpectedly found nil while unwrapping an Optional value

    ios - CIFace 特征边界

    swift - 如何保存实时照片?

    ios - 如何在平面/ycbcr/420f/yuv/NV12/非 rgb 的 CVPixelBufferRef 上绘图?

    ios - iOS 上保存的视频过滤

    swift - 通过 UIActivityViewController 导出 LivePhoto - Swift

    ios - 面向 Swift 协议(protocol)的网络代码导致 Xcode 崩溃

    swift - 雪碧包 : Animate node with running atlas and move node

    swift - |> 运算符在新的 ReactiveCocoa 3.0 中做了什么?