2

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

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

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

谢谢

4

1 回答 1

7

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

简而言之,您首先创建一个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]
于 2013-01-03T10:13:38.607 回答