斯威夫特:裁剪和出口视频 [英] Swift: Crop and Export Video
本文介绍了斯威夫特:裁剪和出口视频的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想将视频裁剪成方形,但我无法做到这一点。
I want to crop a video to square, but i couldn't do that.
我转换了此代码快速但导出视频后我只获得黑屏
I converted this code to swift but i only get black screen after exporting the 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
我缺少什么?
推荐答案
你错过了最后的导出器块,用 AVAssetExportSession执行导出操作
您已创建:
You're missing the exporter block at the very end to perform the export operation with the AVAssetExportSession
you've created:
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
})
这篇关于斯威夫特:裁剪和出口视频的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文