模拟长曝光iOS

Cli*_*lip 2 objective-c avfoundation ios

我在应用程序商店中发现了几个应用程序可以很好地复制长时间曝光,但我在文档中找不到任何引起我注意的内容。我注意到的一件事是,当您打开应用程序时,它会停止播放音乐,这让我认为这些应用程序正在拍摄视频并以某种方式组合这些图像并叠加它们。

有谁知道我如何使用它来做到这一点AVFoundation

omy*_*dio 5

是的。我相信这些帧是从视频中提取出来的,经过处理,然后相互叠加。通常,图像处理部分涉及将每个帧的亮度调暗为帧总数的一个因子,然后累加它们的像素值。

- (UIImage *) createLongExposure:(NSArray *)images {
   UIImage *firstImg = images[0];
   CGSize imgSize = firstImg.size;
   CGFloat alpha = 1.0 / images.count;

   UIGraphicsBeginImageContext(imgSize);
   CGContextRef context = UIGraphicsGetCurrentContext();
   CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]);
   CGContextFillRect(context, CGRectMake(0, 0, imgSize.width, imgSize.height));

   for (UIImage *image in images) {
      [image drawInRect:CGRectMake(0, 0, imgSize.width, imgSize.height)
        blendMode:kCGBlendModePlusLighter alpha:alpha];
   }
   UIImage *longExpImg = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();
   return longExpImg;
}
Run Code Online (Sandbox Code Playgroud)

捕获视频帧的示例代码。 https://developer.apple.com/library/ios/qa/qa1702/_index.html