Отмена экспорта оставшихся активов - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь разрешить пользователю отменить экспорт серии видео во время экспорта в середине (цель: отменить оставшиеся неожиданные видео).

Код для кнопки:

var cancelExportButton = UIButton()

cancelExportButton.addTarget(self, action: #selector(cancelExport(sender:)), for: .touchUpInside)

@objc func cancelExport(sender: UIButton!) {
        print("export cancelled")
//cancel remaining exports code 
    }

for i in 0...videoURLs.count - 1 {
            overlayVideo(titleImage: titleImage, captionImage: captionImage, videoURL: videoURLs[i])

}


func overlayVideo(titleImage: UIImage, captionImage: UIImage, videoURL: URL) {

//...composition and mixing code, not important to exporting

       // Exporting
          let number = Int.random(in: 0...99999)
          let savePathUrl: URL = URL(fileURLWithPath: NSHomeDirectory() + "/Documents/\(number).mp4")
                do { // delete old video
                    try FileManager.default.removeItem(at: savePathUrl)
                } catch { print(error.localizedDescription) }


                let assetExport: AVAssetExportSession = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetHighestQuality)!
                assetExport.videoComposition = layerComposition
                assetExport.outputFileType = AVFileType.mov
                assetExport.outputURL = savePathUrl
                assetExport.shouldOptimizeForNetworkUse = true

      assetExport.exportAsynchronously { () -> Void in
                    switch assetExport.status {
                    case AVAssetExportSessionStatus.completed:
                        print("success")
                    case AVAssetExportSessionStatus.failed:
                        print("failed \(assetExport.error?.localizedDescription ?? "error nil")")
                    case AVAssetExportSessionStatus.cancelled:
                        print("cancelled \(assetExport.error?.localizedDescription ?? "error nil")")
                    default:
                        print("complete")

                    }
                }
    }

Какой код (с использованием очередей или свойств мониторинга) будет работать в cancelExport, чтобы отменить все оставшиеся экземпляры функций / неэкспортированные активы?

Я пытался превратить assetExport в класс переменная и установка ее на ноль после успешного экспорта, но экспорт выполняется в то же время, поэтому это испортит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...