使用iPhone的相机尽可能快地获取多个视频帧



我的目标是,当用户按下一个按钮时,会以尽可能快的速度捕捉到几个视频帧,并最终保存到iphone的相册中。

我不熟悉swift,所以我使用了一个非常糟糕的实现。我用0定义了一个int数,并将其更改为用户按下按钮时要捕获的帧数。

var number:Int? = 0
@IBAction func takeFrames(sender: UIButton) {
    self.number=5;
}

然后在代理中,我将这些帧保存到相册中:

func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {
    if(number>0) {
        let rawImage:UIImage = self.imageFromSampleBuffer(sampleBuffer)
        let img = UIImagePNGRepresentation(rawImage)
        let pngImg = UIImage.init(data: img!)
        UIImageWriteToSavedPhotosAlbum(pngImg!, nil, nil, nil)
        print("PNG frame write to photo album successfully")
        number = number!-1;
    }
}

我的问题是:

1) 我可以使用更优雅、更安全的方式使用按钮来控制帧捕获吗?

2) 目前,我一帧一帧地保存,所以我没有尽快实现捕捉帧的目标,我能捕捉到我需要的所有帧,并将它们保存到相册中吗?

提前谢谢。

尝试这样做:

    let imageArray: NSMutableArray?
    for _ in 0 ..< 5  {
        let rawImage:UIImage = self.imageFromSampleBuffer(sampleBuffer)
        let img = UIImagePNGRepresentation(rawImage)
        let pngImg = UIImage.init(data: img!)
        imageArray?.addObject(pngImg!)
    }
    for image in imageArray! {
        UIImageWriteToSavedPhotosAlbum(image as! UIImage, nil, nil, nil)
    }
    print("PNG frame write to photo album successfully")

Swift有时会混淆语句。这将拍摄'5'张图像。

最新更新