Iphone 如何裁剪视频?
我想裁剪视频的特定部分。给定高度、宽度、x和y,我想裁剪视频上的特定区域。有人知道吗 我做了很多研究,但没有发现任何有成效的东西。我尝试使用GPUImage Cropfilter进行修剪,但它花费了太多的时间 我想尽可能快地执行此操作,请建议我如何执行此操作的技术或示例。Iphone 如何裁剪视频?,iphone,ios,ios5,ios6,ios4,Iphone,Ios,Ios5,Ios6,Ios4,我想裁剪视频的特定部分。给定高度、宽度、x和y,我想裁剪视频上的特定区域。有人知道吗 我做了很多研究,但没有发现任何有成效的东西。我尝试使用GPUImage Cropfilter进行修剪,但它花费了太多的时间 我想尽可能快地执行此操作,请建议我如何执行此操作的技术或示例。 提前感谢您可以使用AVMutableComposition和AVAssetExportSession在AVFoundation Framework中提供 有关更多详细信息,请访问苹果参考图书馆和 我试过了,但它没有在最终输出
提前感谢您可以使用
AVMutableComposition
和AVAssetExportSession
在AVFoundation Framework
中提供
有关更多详细信息,请访问苹果参考图书馆和
我试过了,但它没有在最终输出中裁剪视频。它只是向用户显示裁剪的部分,但在导出视频时,它是原样的…:(我已经使用了这段代码,CGAffineTransformMake类的函数CGAffineTransformMake()只能水平或垂直翻转或旋转视频帧,但不会对其进行裁剪!!!请看这是使用CGAffineTransformMake可以做的事情(检查此链接)请检查上面我已经编辑了答案现在我们正在裁剪父层,我们必须在其上添加视频层作为子层,所以导出后我们将得到裁剪视频什么是cropsize.x和cropsize.y它们是我们开始裁剪的坐标吗???上面的代码不起作用!!另外,您正在创建两个同名videoComp的对象位置。。。
AVAsset* asset = // Create your asset with source video url
AVMutableComposition *videoComposition = [AVMutableComposition composition];
AVMutableCompositionTrack *compositionVideoTrack = [videoComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVAssetTrack *clipVideoTrack = [[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
AVMutableVideoComposition* videoComposition = [[AVMutableVideoComposition videoComposition]retain];
videoComposition.renderSize = CGSizeMake(320, 240);
videoComposition.frameDuration = CMTimeMake(1, 30);
AVMutableVideoCompositionInstruction *instruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
instruction.timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(60, 30) );
AVMutableVideoCompositionLayerInstruction* transformer = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:clipVideoTrack];
CGAffineTransform finalTransform = // setup a transform that grows the video, effectively causing a crop
[transformer setTransform:finalTransform atTime:kCMTimeZero];
instruction.layerInstructions = [NSArray arrayWithObject:transformer];
videoComposition.instructions = [NSArray arrayWithObject: instruction];
CGSize videoSize = myVideoComposition.renderSize;
CALayer *parentLayer = [CALayer layer];
CALayer *videoLayer = [CALayer layer];
NSLog(@"%f %f",_playerLayer.frame.origin.x,_playerLayer.frame.size.width);
parentLayer.frame = CGRectMake( 0, 0 , cropsize.x , cropsize.y );
[videoLayer setPosition:CGPointMake(videoLayer.position.x, videoSize.height)];
[parentLayer addSublayer:videoLayer];
videoComposition.animationTool = [AVVideoCompositionCoreAnimationTool videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayer:videoLayer inLayer:parentLayer];
exporter = [[AVAssetExportSession alloc] initWithAsset:saveComposition presetName:AVAssetExportPresetHighestQuality] ;
exporter.videoComposition = videoComposition;
exporter.outputURL=url3;
exporter.outputFileType=AVFileTypeQuickTimeMovie;
[exporter exportAsynchronouslyWithCompletionHandler:^(void){}];