【发布时间】:2015-07-17 15:27:35
【问题描述】:
我想裁剪横向视频的异常值,使其具有纵向视频的尺寸比。
我在这篇文章中阅读了关于裁剪的信息:How do I use AVFoundation to crop a video
但我不确定如何设置转换 - 这个答案现在已经有四年多了,所以我不确定它如何适用于今天可用的更大屏幕尺寸。天呐!
【问题讨论】:
标签: ios avfoundation video-processing
我想裁剪横向视频的异常值,使其具有纵向视频的尺寸比。
我在这篇文章中阅读了关于裁剪的信息:How do I use AVFoundation to crop a video
但我不确定如何设置转换 - 这个答案现在已经有四年多了,所以我不确定它如何适用于今天可用的更大屏幕尺寸。天呐!
【问题讨论】:
标签: ios avfoundation video-processing
这似乎可以解决问题:
AVAssetTrack *clipVideoTrack = [[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
AVMutableVideoComposition* videoComposition = [AVMutableVideoComposition videoComposition];
float width = 1080.0/1920.0 * size.height;
videoComposition.renderSize = CGSizeMake(width, size.height);
videoComposition.frameDuration = CMTimeMake(1, 30);
AVMutableVideoCompositionInstruction *instruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
instruction.timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(60, 30) );
AVMutableVideoCompositionLayerInstruction* transformer = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:clipVideoTrack];
CGAffineTransform translate = CGAffineTransformMakeTranslation((width - size.width)/2, 0);
translate = CGAffineTransformScale(translate, 1, 1);
[transformer setTransform:translate atTime:kCMTimeZero];
instruction.layerInstructions = [NSArray arrayWithObject:transformer];
videoComposition.instructions = [NSArray arrayWithObject: instruction];
encoder.videoComposition = videoComposition;
【讨论】: