放大,剪裁和剪切视频iPhone

时间:2012-12-13 07:30:00

标签: iphone ios xcode video zoom

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

  1. 缩放 - 我应该可以通过捏合手势来放大和缩小视频。
  2. 裁剪 - 我应该能够在增加/降低速度后裁剪视频长度。
  3. 剪切 - 我应该可以在视频的任何部分拖动窗口,并将窗口内的视频剪切为单独的视频。
  4. 由于视频尺寸非常小(不到一分钟),我所能想到的是通过提取每个帧然后执行上述操作将视频转换为图像。 有谁能提出更好的主意?

    谢谢

1 个答案:

答案 0 :(得分:7)

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

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

movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL];

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

cropFilter = [[GPUImageCropFilter alloc] init];
[movieFile addTarget:cropFilter];

您可以通过向链中的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]