Как приостановить и возобновить AVAssetExportSession при экспорте видео композиции - PullRequest
2 голосов
/ 03 июля 2019

Я пытаюсь экспортировать повернутое видео с помощью AVAssetExportSession и хочу приостановить и возобновить AVAssetExportSession при нажатии кнопки.

    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)
       }

    })

Предположим, что видео, прогресс экспорта которого завершен на 50%.Поэтому я приостановил процесс экспорта на 50%, а затем возобновил его снова.Это должно возобновиться с 50%, где это было приостановлено прежде.

...