【发布时间】:2014-11-05 08:03:24
【问题描述】:
我知道这是一个常见问题,但我环顾四周并没有明确的答案。
代码来自一篇文章:http://www.netwalk.be/article/record-square-video-ios
我想要什么:我想裁剪视频以使其成为正方形。
所以基本上这就是我正在做的事情。这对我来说是有道理的,但由于某种原因视频没有裁剪,事实上,它保持相同的大小(宽度和高度)。
AVAsset* asset = [AVAsset assetWithURL:self.videoURL];
AVMutableComposition *composition = [AVMutableComposition composition];
[composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
// input clip
AVAssetTrack *clipVideoTrack = [[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
// make it square
AVMutableVideoComposition* videoComposition = [AVMutableVideoComposition videoComposition];
videoComposition.renderSize = CGSizeMake(3.0 , 3.0);
videoComposition.frameDuration = CMTimeMake(1, 30);
AVMutableVideoCompositionInstruction *instruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
instruction.timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(clipVideoTrack.naturalSize.width, clipVideoTrack.naturalSize.width) );
// rotate to portrait
AVMutableVideoCompositionLayerInstruction* transformer = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:clipVideoTrack];
CGAffineTransform t1 = CGAffineTransformMakeTranslation(clipVideoTrack.naturalSize.height, -(clipVideoTrack.naturalSize.width - clipVideoTrack.naturalSize.height) /2 );
CGAffineTransform t2 = CGAffineTransformRotate(t1, M_PI_2);
CGAffineTransform finalTransform = t2;
[transformer setTransform:finalTransform atTime:kCMTimeZero];
instruction.layerInstructions = [NSArray arrayWithObject:transformer];
videoComposition.instructions = [NSArray arrayWithObject: instruction];
AVAssetExportSession *exporter;
// export
exporter = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality] ;
exporter.videoComposition = videoComposition;
exporter.outputURL=self.videoURL;
exporter.outputFileType=AVFileTypeMPEG4;
[exporter exportAsynchronouslyWithCompletionHandler:^(void){
NSLog(@"Exporting done!");
}];
我相信问题最终出在出口商身上。要么它没有正确导出,要么我还缺少其他东西。请有人向我推荐一个好方法。谢谢。
【问题讨论】:
-
以下解决方案是否解决了您的问题。我遇到了完全相同的问题,但我似乎无法弄清楚为什么视频的大小保持不变?
-
如果你能解决这个问题,请帮助我。 stackoverflow.com/questions/43451879/…
标签: ios objective-c video avfoundation crop