我有一些编辑视频的代码,然后创建一个AVAssetExportSession来保存编辑过的视频。我想将它保存到相机胶卷,但无法弄清楚NSURL是什么。
var session: AVAssetExportSession = AVAssetExportSession(asset: myasset, presetName: AVAssetExportPresetHighestQuality)
session.outputURL = ???
session.exportAsynchronouslyWithCompletionHandler(nil)
有谁知道如何确定将视频保存到相机胶卷的正确NSURL?在此先感谢您的帮助。
答案 0 :(得分:11)
您只需使用session.outputURL = ...
即可将视频直接保存到相机胶卷。您必须将视频保存到文件路径(临时或其他方式),然后使用writeVideoAtPathToSavedPhotosAlbum:
将该网址上的视频写入您的相机胶卷,例如:
var exportPath: NSString = NSTemporaryDirectory().stringByAppendingFormat("/video.mov")
var exportUrl: NSURL = NSURL.fileURLWithPath(exportPath)!
var exporter = AVAssetExportSession(asset: myasset, presetName: AVAssetExportPresetHighestQuality)
exporter.outputURL = exportUrl
exporter.exportAsynchronouslyWithCompletionHandler({
let library = ALAssetsLibrary()
library.writeVideoAtPathToSavedPhotosAlbum(exportURL, completionBlock: { (assetURL:NSURL!, error:NSError?) -> Void in
// ...
})
})
答案 1 :(得分:5)
以下是 Swift 3 的清理答案,现在通过Photos
框架保存到相册。
您需要同时导入AVFoundation
和Photos
才能生效。
func exportAsset(asset: AVAsset) {
let exportPath = NSTemporaryDirectory().appendingFormat("/video.mov")
let exportURL = URL(fileURLWithPath: exportPath)
let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetHighestQuality)
exporter?.outputURL = exportURL
exporter?.exportAsynchronously(completionHandler: {
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: exportURL)
}) { saved, error in
if saved {
print("Saved")
}
}
})
}