Swift: Recortar y exportar video

Quiero recortar un video a cuadrado, pero no pude hacer eso.

Convertí este código a Swift, pero solo obtuve una pantalla en negro después de exportar el video.

var videoComposition: AVMutableVideoComposition = AVMutableVideoComposition() videoComposition.frameDuration = CMTimeMake(1, 60) videoComposition.renderSize = CGSizeMake(clipVideoTrack.naturalSize.height, clipVideoTrack.naturalSize.height) var instruction: AVMutableVideoCompositionInstruction = AVMutableVideoCompositionInstruction() instruction.timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(60, 30)) var transformer: AVMutableVideoCompositionLayerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: clipVideoTrack) var t1: CGAffineTransform = CGAffineTransformMakeTranslation(clipVideoTrack.naturalSize.height, 0) var t2: CGAffineTransform = CGAffineTransformRotate(t1, CGFloat(M_PI_2)) var finalTransform: CGAffineTransform = t2 transformer.setTransform(finalTransform, atTime: kCMTimeZero) instruction.layerInstructions = NSArray(object: transformer) videoComposition.instructions = NSArray(object: instruction) var documentsPath: NSString = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask,true)[0] as NSString var exportPath: NSString = documentsPath.stringByAppendingFormat("/xvideo.mov") var exportUrl: NSURL = NSURL.fileURLWithPath(exportPath)! var exporter = AVAssetExportSession(asset: asset!, presetName: AVAssetExportPresetHighestQuality) exporter.videoComposition = videoComposition exporter.outputFileType = AVFileTypeQuickTimeMovie exporter.outputURL = exportUrl 

¿Qué me estoy perdiendo?

Le falta el bloque exportador al final para realizar la operación de export con AVAssetExportSession que ha creado:

 exporter.exportAsynchronouslyWithCompletionHandler({ //display video after export is complete, for example... let outputURL:NSURL = exporter.outputURL; let asset:AVURLAsset = AVURLAsset(URL: outputURL, options: nil) let newPlayerItem:AVPlayerItem = AVPlayerItem(asset: asset) self.mPlayer = AVPlayer.playerWithPlayerItem(newPlayerItem) as AVPlayer })