我需要将数据对象转换为 AVAsset。
曾经我需要将 Realm 中的视频保存为 Data 对象。为了保存它,我将 AVAsset 转换为 Data。现在我需要将其转换回来并将视频保存到 cameraRoll。
也许你可以为这个问题提出一些其他的解决方案?)
这是我将 AVAsset 转换为 Data 的方法:
func convert(phAsset: PHAsset, completion: @escaping (_ data: Data?) -> Void) {
PHCachingImageManager().requestAVAsset(forVideo: phAsset,
options: nil,
resultHandler: { asset, _, _ in
guard let asset = asset else { return }
let exportSession = AVAssetExportSession(asset: asset,
presetName: AVAssetExportPresetHighestQuality)
let fileUrl: URL
guard let url = asset as? AVURLAsset else { return }
fileUrl = url.url
exportSession?.outputURL = fileUrl
exportSession?.outputFileType = AVFileTypeQuickTimeMovie
var data = Data()
exportSession?.exportAsynchronously {
do {
data = try Data(contentsOf: fileUrl)
completion(data)
} catch { return }
}
})
}