AVAssetExportSession 现状设置

AVAssetExportSession status kvo set up

我正在使用 AVAssetExportSession。我不确定为什么结果没有显示视频,所以我想观察 AVAssetExportSession 的状态。这是我第一次做KVO。

AVAssetExportSession.Status

它提到 AVAssetExportSession.Status 是可观察的。我设置为

        guard let export = AVAssetExportSession(
          asset: composition,
          presetName: AVAssetExportPresetHighestQuality)
          else {
            print("Cannot create export session.")
            fatalError()
        }
        export.observe(\AVAssetExportSession.status, options: .new) {
            export, change in
            print("export.status : \(export.status)")
        }

我执行了导出会话,当我检查异步块中的状态时,它显示已完成。我想查看状态从开始到完成的进度,所以我删除了这段打印状态的代码。

export.videoComposition = videoComposition
        export.outputFileType = .mov
        export.outputURL = exportURL
        
        export.exportAsynchronously {
          DispatchQueue.main.async {

          }
        }

我在 kvo 块中设置了断点,但它似乎没有任何作用。

您需要保留对它的引用

var keyVO:NSKeyValueObservation!
func viewDidLoad() {
   super.viewDidLoad() 
   keyVO = export.observe(\AVAssetExportSession.status, options: .new) {  export, change in
      print("export.status : \(export.status)")
   }
}