我的 iPhone 应用程序中有一个小视频剪辑,我希望在其上执行以下操作 -
- 缩放 - 我应该能够通过捏合手势来放大和缩小视频。
- 裁剪 - 我应该能够在增加/降低速度后裁剪视频长度。
- 剪切 - 我应该能够在视频的任何部分拖动一个窗口,并将窗口内的那段视频剪切为单独的视频。
由于视频很小(不到一分钟),我能想到的就是通过提取每一帧将视频转换为图像,然后执行上述操作。谁能提出一个更好的主意?
谢谢
实现这些操作的一种简单快速的方法是使用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]