在swift 3中从视频中提取帧

时间:2017-09-01 22:11:56

标签: ios swift3 avfoundation avcapture

嘿我正在尝试在我的设备上运行实时Feed。现在我想每隔3秒捕捉一张照片,但每次都会拍照。它发出快门声。这是糟糕的用户体验。

因此,我想从前置摄像头运行实时摄像头流,并以一定的持续时间(约3秒)捕获帧。

如何从实时相机Feed中提取帧并将其存储在UIImage变量中?

谢谢,干杯!

2 个答案:

答案 0 :(得分:2)

当您编写自己的自定义相机时,您将使用AVAssetReader和AVAssetWriter以及AVCaptureVideoDataOutputSampleBufferDelegate来销售和处理CMSampleBuffers。

使用这种方法,您可以轻松获得CIImage并使用过滤器等进行处理。

你基本上想要一个每三秒钟触发一次的计时器,让委托块知道捕获和处理一个帧,用它做你想做的事情,然后继续丢弃其余部分(或者将它们写入视频,如果这是什么的话你想要的。)

此问题Recording videos with real-time filters in Swift包含您要查找的示例代码。而不是将缓冲区写出来,而是将其捕获为图像。

祝你好运!

答案 1 :(得分:2)

我完全了解您的问题。几天前,我也遇到了这个问题,这就是为什么我开发了一个完整的解决方案,从显示实时摄影机预览,将其正确安排在视图上到连续获取摄影机帧并将帧有效转换为UIImages而没有内存泄漏以相应地利用它。请根据您的需要使用解决方案。该解决方案针对swift 4.2进行了优化,并在Xcode 10.0上开发。

这是GITHUB REPO的链接:- https://github.com/anand2nigam/CameraFrameExtractor

请使用您的iPhone或iPad测试该应用程序,因为它无法在模拟器上运行。请让我知道该应用程序的功能及其功能,如果需要任何帮助,请与我联系。 希望它能解决您的问题。学习愉快。