gpt4 book ai didi

ios - 如何将视频裁剪成特定尺寸?

转载 作者:搜寻专家 更新时间:2023-10-31 08:05:09 25 4
gpt4 key购买 nike

我已点击此链接裁剪和调整视频大小:

Swift: Crop and Export Video

我想裁剪视频并将其调整为 612*612。我的代码如下:

 let outputPath : NSString = NSString(format: "%@%@", NSTemporaryDirectory(), "output.mov")

let outputURL : NSURL = NSURL(fileURLWithPath: outputPath as String)!

let fileManager : NSFileManager = NSFileManager.defaultManager()

if(fileManager.fileExistsAtPath(outputPath as String))
{
let asset : AVURLAsset = AVURLAsset(URL: outputURL, options: nil)
if let clipVideoTrack: AVAssetTrack = asset.tracksWithMediaType(AVMediaTypeVideo)[0] as? AVAssetTrack
{

var videoComposition: AVMutableVideoComposition = AVMutableVideoComposition()
videoComposition.frameDuration = CMTimeMake(1, 60)

print(clipVideoTrack.naturalSize.height)

videoComposition.renderSize = CGSizeMake(612,612)

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) as [AnyObject]

videoComposition.instructions = NSArray(object: instruction) as [AnyObject]


let exportPath : NSString = NSString(format: "%@%@", NSTemporaryDirectory(), "output2.mov")

var exportUrl: NSURL = NSURL.fileURLWithPath(exportPath as! String)!
if(fileManager.fileExistsAtPath(exportPath as String))
{
var error:NSError? = nil
if(fileManager.removeItemAtPath(exportPath as String, error: &error))
{
//Error - handle if requried
}
}

var exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetHighestQuality)
exporter.videoComposition = videoComposition
exporter.outputFileType = AVFileTypeQuickTimeMovie
exporter.outputURL = exportUrl
exporter.exportAsynchronouslyWithCompletionHandler({ () -> Void in

dispatch_async(dispatch_get_main_queue()) {
() -> Void in
let outputURL:NSURL = exporter.outputURL;
self.videoURL = outputURL
let asset:AVURLAsset = AVURLAsset(URL: outputURL, options: nil)

}

})

}


}

我得到的视频大小为 612*612,但内容很奇怪。可能是什么问题?

enter image description here

enter image description here

最佳答案

得到解决方案:我已将 AVCaptureSession 的值设置为 AVCaptureSessionPresetiFrame960x540我将其值更改为 AVCaptureSessionPreset1280x720 解决了我的问题。

关于ios - 如何将视频裁剪成特定尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31744674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com