title: Square cropping and fixing the video orientation in iOS
body: <p>I am capturing the video using UIImagePickerController, i can crop the video using the following code,</p>
  
  <pre><code>AVAsset *asset = [AVAsset assetWithURL:url];
  
  //create an avassetrack with our asset
  AVAssetTrack *clipVideoTrack = [[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
  
  //create a video composition and preset some settings
  AVMutableVideoComposition* videoComposition = [AVMutableVideoComposition videoComposition];
  videoComposition.frameDuration = CMTimeMake(1, 30);
  //here we are setting its render size to its height x height (Square)
  
  videoComposition.renderSize = CGSizeMake(clipVideoTrack.naturalSize.height, clipVideoTrack.naturalSize.height);
  
  //create a video instruction
  AVMutableVideoCompositionInstruction *instruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
  instruction.timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(60, 30));
  
  AVMutableVideoCompositionLayerInstruction* transformer = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:clipVideoTrack];
  
  //Here we shift the viewing square up to the TOP of the video so we only see the top
  CGAffineTransform t1 = CGAffineTransformMakeTranslation(clipVideoTrack.naturalSize.height, -20);
  
  //Use this code if you want the viewing square to be in the middle of the video
  //CGAffineTransform t1 = CGAffineTransformMakeTranslation(clipVideoTrack.naturalSize.height, -(clipVideoTrack.naturalSize.width - clipVideoTrack.naturalSize.height) /2 );
  
  //Make sure the square is portrait
  CGAffineTransform t2 = CGAffineTransformRotate(t1, M_PI_2);
  
  CGAffineTransform finalTransform = t2;
  [transformer setTransform:finalTransform atTime:kCMTimeZero];
  
  //add the transformer layer instructions, then add to video composition
  instruction.layerInstructions = [NSArray arrayWithObject:transformer];
  videoComposition.instructions = [NSArray arrayWithObject: instruction];
  
  //Create an Export Path to store the cropped video
  NSString *outputPath = [NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), @"video.mp4"];
  NSURL *exportUrl = [NSURL fileURLWithPath:outputPath];
  
  //Remove any prevouis videos at that path
  [[NSFileManager defaultManager]  removeItemAtURL:exportUrl error:nil];
  
  //Export    
  AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetLowQuality] ;
  exporter.videoComposition = videoComposition;
  exporter.outputURL = exportUrl;
  exporter.outputFileType = AVFileTypeMPEG4;
  
  [exporter exportAsynchronouslyWithCompletionHandler:^
   {
       dispatch_async(dispatch_get_main_queue(), ^{
           //Call when finished
           [self exportDidFinish:exporter];
       });
   }];
  </code></pre>
  
  <p>But i dont know how to fix the orientation issue. Like instagram and vine app , (i.e) if i capture the video even in landscape mode, it should be in portrait mode and need to crop the video as square. Pls give me the solution... i am struggling with this issue...</p>