放大,剪裁和剪切视频iPhone

gir*_*_vr 2 iphone video xcode zoom ios

我的iPhone应用程序中有一个小视频片段,我希望在其中执行以下操作 -

  1. 缩放 - 我应该能够通过捏手势来放大和缩小视频.
  2. 裁剪 - 我应该能够在增加/降低速度后裁剪视频长度.
  3. 剪切 - 我应该可以在视频的任何部分拖动一个窗口,并将窗口内的那段视频剪切成一个单独的视频.

由于视频大小非常小(不到一分钟),我所能想到的是通过提取每个帧然后执行上述操作将视频转换为图像.有谁能提出更好的主意?

谢谢

Pul*_*yal 7

实现这些操作的一种简单快捷的方法是使用GPUImage框架.您应该在GPUImageMovie课堂上GPUImage查看在iOS中编辑电影.该框架已经附带了一组过滤器,您可以使用这些过滤器来执行所需的操作.有关如何使用GPUImage编辑视频的详细信息,请参阅此部分.

简而言之,您首先要创建一个GPUImageMovie对象:

movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL];
Run Code Online (Sandbox Code Playgroud)

然后创建一些过滤器并将过滤器应用于对象.

cropFilter = [[GPUImageCropFilter alloc] init];
[movieFile addTarget:cropFilter];
Run Code Online (Sandbox Code Playgroud)

您可以通过向链中的previousFilter添加目标来在链中添加更多过滤器.最后,当您准备好转换视频时,请执行以下操作:

NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Movie.m4v"];
unlink([pathToMovie UTF8String]);
NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];

movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(480.0, 640.0)];
[pixellateFilter addTarget:movieWriter];

movieWriter.shouldPassthroughAudio = YES;
movieFile.audioEncodingTarget = movieWriter;
[movieFile enableSynchronizedEncodingUsingMovieWriter:movieWriter];

[movieWriter startRecording];
[movieFile startProcessing]
Run Code Online (Sandbox Code Playgroud)