2014-12-26 5 views
8

Voglio ritagliare un video in quadrato, ma non potevo farlo.Swift: Ritaglia ed esporta video

ho convertito this code a rapida ma ho solo schermo nero dopo l'esportazione del 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 

Cosa mi manca?

+0

si potrebbe fornire l'intera func finale per favore? –

risposta

2

ti manca il blocco esportatore proprio alla fine di eseguire l'operazione di esportazione con il AVAssetExportSession che hai creato:

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 

}) 
+0

lo ha fatto, grazie. :) – user3786081