1
アップルのドキュメントはAVAssetにCIFilterを適用するため、この例を与えるGPUココアにCIFilterの適用:(はるかにパフォーマンスのAACコーデックを使用したものとなるように思われる)は
let filter = CIFilter(name: "CIGaussianBlur")!
let composition = AVVideoComposition(asset: asset, applyingCIFiltersWithHandler: { request in
// Clamp to avoid blurring transparent pixels at the image edges
let source = request.sourceImage.clampingToExtent()
filter.setValue(source, forKey: kCIInputImageKey)
// Vary filter parameters based on video timing
let seconds = CMTimeGetSeconds(request.compositionTime)
filter.setValue(seconds * 10.0, forKey: kCIInputRadiusKey)
// Crop the blurred output to the bounds of the original image
let output = filter.outputImage!.cropping(to: request.sourceImage.extent)
// Provide the filter output to the composition
request.finish(with: output, context: nil)
})
これは、いくつかのビデオで素晴らしい作品と他の人はCPU使用率が高くなり、ビデオは処理を終了しません。これをGPU上に移して、CPUの多くを結びつけないようにする方法はありますか? iOS用のthis questionを見ましたが、CIContext contextWithEAGLContext:
はOS Xでは使用できません。私はAVFoundation/video処理を初めて使用しています。OS Xに相当するものはありますか?
注:リアルタイムでこれを行うつもりはないので、フィルタを適用し、GPUを使用してファイルをファイルシステムにエクスポートするだけです。