iphone - 如何裁剪视频?

标签 iphone ios ios5 ios6 ios4

我想在特定部分裁剪视频。给定高度、宽度、x 和 y,我想裁剪视频上的特定区域。有没有人知道。

我做了很多研究,但没有发现任何成果。我尝试使用 GPUImage Cropfilter 进行裁剪,但它花费了太多时间。

我想尽快执行此操作,请建议我如何执行此操作的技术或示例。 提前致谢

最佳答案

您可以使用 AVMutableCompositionAVAssetExportSession 它们在 AVFoundation Framework< 中可用

有关更多详细信息,请访问苹果的引用资料库 AVMutableComposition Class ReferenceAVAssetExportSession Class Reference

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){}];

关于iphone - 如何裁剪视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18606635/

相关文章:

ios - 是否可以通过在 iOS 上通过企业分发来分发应用程序来测试真实的应用程序内订阅?

iphone - 从 iOS 应用程序发布时出现 Facebook SDK 3.1 错误

"inactive" View 中的 iPhone 事件触发

ios - iPhone 模拟器 : failed to launch application with error: 3?

iphone - 从前置摄像头 iOS 5.0 捕获时总是看到镜像

iphone - 如何将 TableView Controller 的类型更改为常规 View Controller ?

iphone - 在 IOS 中解析 Twitter JSON 提要

iphone - 将值从 C++ 返回到 Obj-C?

xcode - 如何为4寸屏幕指定图片资源?

ios - Objective-C - InputStream 到 NSString