【问题标题】:Swift: Crop and Export VideoSwift:裁剪和导出视频
【发布时间】:2015-02-23 23:49:40
【问题描述】:

我想将视频裁剪成正方形,但我做不到。

我将this code 转换为swift,但导出视频后我只得到黑屏

        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

我错过了什么?

【问题讨论】:

  • 你能提供完整的最终函数吗?

标签: ios video swift crop


【解决方案1】:

您在最后缺少导出器块,无法使用您创建的AVAssetExportSession 执行导出操作:

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

})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 2013-09-13
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    相关资源
    最近更新 更多