在 swift 3 中从视频中提取帧

Extracting frame from video in swift 3

嘿,我正在尝试 运行 在我的设备上进行直播。现在我想每 3 秒拍摄一张照片,但每次都如此。它发出快门声。这是糟糕的用户体验。

因此我想 运行 来自前置摄像头的实时摄像头流并在特定持续时间(~3 秒)捕获帧。

如何从实时摄像头源中提取帧并将其存储在 UIImage 变量中?

谢谢和干杯!

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

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

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

这里的这个问题 包含您要查找的示例代码。不要将缓冲区写出,而是将其捕获为图像。

祝你好运!

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

上开发

这是 GITHUB 的 LINK 回购:- https://github.com/anand2nigam/CameraFrameExtractor

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