I'm trying to export a rotated video using AVAssetExportSession, and want to pause and resume AVAssetExportSession at button click.
var exportSession = AVAssetExportSession.init(asset: composition, presetName: AVAssetExportPresetHighestQuality)
exportSession?.videoComposition = videoComposition
exportSession?.outputFileType = AVFileType.mov
exportSession?.outputURL = URL.init(fileURLWithPath: videoPath)
exportSession?.videoComposition = videoComposition
var exportProgress: Float = 0
let queue = DispatchQueue(label: "Export Progress Queue")
queue.async(execute: {() -> Void in
while exportSession != nil {
exportProgress = (exportSession?.progress)!
print("current progress == \(exportProgress)")
}
sleep(1)
}
})
exportSession?.exportAsynchronously(completionHandler: {
if exportSession?.status == AVAssetExportSessionStatus.failed {
print("Failed \(exportSession?.error?.localizedDescription)")
exportSession = nil
} else if exportSession?.status == AVAssetExportSessionStatus.completed {
exportSession = nil
VideoSave.saveVideoToPhotoLibrary(URL.init(fileURLWithPath: videoPath), error: nil)
}
})
let suppose if a video whose export progress is completed 50%. So I pause its export process at 50% then resume it again. It should resume from 50% where it was paused before.