如何减少iOS上的视频处理时间?

时间:2018-07-11 06:24:46

标签: ios swift video video-processing metal

我目前正在使用AVComposition和CIFilter来应用过滤器和AVExportSession来导出该视频,但是处理45秒钟的视频要花费30秒钟的时间。

我也尝试过将MtalPetalSDAVAssetExportSession一起使用,但仍然需要花费时间。

我也尝试过GPUImage示例,但这仍然需要时间。

视频分辨率:480 * 480

注意:在我的应用程序中,我在录制时无法应用过滤器。

谁能建议我如何减少iOS上的视频处理时间?

1 个答案:

答案 0 :(得分:0)

您实际上可以在激活过滤器的情况下录制视频,并在录制时将其保存到文件中,这意味着导出时间为0。

您将需要使用:

AVCaptureVideoDataOutput

这为以下提供了委托方法:

captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!)

基本上,您将CMSampleBuffer转换为CIImage,应用滤镜,回到CMSampleBuffer,然后保存。

这是一个困难的API,我建议您看一下:

Rosy Writer Swift

这给出了一个思路,即如何设置正确的队列,以便按顺序取出视频帧和音频,然后将它们通过过滤器,然后再将其即时导出到视频文件中。