2014-12-26 8 views
8

Ich möchte ein Video auf Platz schneiden, aber ich konnte das nicht tun.Swift: Crop und Export Video

I umgewandelt this code zu schnellen, aber ich nur schwarzen Bildschirm erhalten, nachdem das Video exportieren

 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 

Was bin ich?

+0

könnten Sie die ganze letzte func bitte geben? –

Antwort

2

Sie verpassen den Exporteur Block am Ende der Exportvorgang mit der AVAssetExportSession Sie erstellt haben auszuführen:

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

es tat, danke. :) – user3786081