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

标签 ios iphone swift

我的目标是当用户按下按钮时,尽可能快地捕获多个视频帧,并最终保存到 iPhone 的相册中。

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

var number:Int? = 0

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

然后在委托(delegate)中我将这些帧保存到相册中:

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 有时可能会混淆 for 语句。这将拍摄“5”张图像。

关于ios - 使用 iPhone 的相机和 swift 尽可能快地获取多个视频帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36482202/

相关文章:

ios - 我如何从 UINavigationController 转到 UIViewController

ios - 将多个图像发送到 Web 服务器

ios - Swift segue fatal error

ios - NSURLConnection connectionDidFinishLoading 未被随机调用

ios - 如果我想确保我返回的 NSMutableArray 仅被视为 NSArray,那么复制我应该使用的是什么? Actor ?

iphone - 在 UIScrollView 之上添加 View

iphone - VoiceOver 的 UISlider 可访问性特征?

ios - 以立体声 iOS 录制音频

swift - 如何使用 Realm Swift Init

ios - 在嵌入选项卡栏 Controller 的 VC 之间传递 Swift 数据