我正在Swift
开发相机应用程序,可以实时编辑每一帧。
所以我需要的是:
使用CIFilter
修改每一帧 - 可能使用AVCaptureVideoDataOutput
将数据缓冲区写入AVAssetWriter
CIFilter
我所拥有的:
我能够编辑视频输出并使用imageView
将其显示在屏幕上。但我认为这不是最好的方法,而iPhone 4S我的FPS非常低:
func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!)
{
guard let filter = Filters["Saturation"]
let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
let cameraImage = CIImage(CVPixelBuffer: pixelBuffer!)
filter!.setValue(cameraImage, forKey: kCIInputImageKey)
let filteredImage = UIImage(CIImage: filter!.valueForKey(kCIOutputImageKey) as! CIImage!)
dispatch_async(dispatch_get_main_queue())
{
self.imageView.image = filteredImage
}
}
那么如何更改我的代码以更有效地编辑框架,将其显示到屏幕以及何时需要将其写入文件(我知道,我必须将filtred图像转换为CMSampleBuffer
,但我不知道知道如何使用NSTime
)?