Как сохранить видео с AVAssetExportSession в Camera Roll?

У меня есть код, который редактирует видео, а затем создает AVAssetExportSession для сохранения отредактированного видео где-то. Я хотел бы сохранить его в рулоне камеры, но не могу понять, что такое NSURL.

var session: AVAssetExportSession = AVAssetExportSession(asset: myasset, presetName: AVAssetExportPresetHighestQuality) session.outputURL = ??? session.exportAsynchronouslyWithCompletionHandler(nil) 

Кто-нибудь знает, как определить правильный NSURL для сохранения видео в рулоне камеры? Заранее спасибо за вашу помощь.

2 Solutions collect form web for “Как сохранить видео с AVAssetExportSession в Camera Roll?”

Вы не можете сохранить свое видео прямо в кадре камеры, просто используя session.outputURL = ... Вам нужно будет сохранить видео в пути к файлу (временному или другому), а затем записать видео по этому URL-адресу в ваш рулон камеры, используя 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 // ... }) }) 

Ниже приведен очищенный ответ для Swift 3, который теперь сохраняется в альбоме через фреймворк.

Для этого вам нужно будет импортировать как 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") } } }) } 
  • Как отправить NSData через OutputStream
  • Рамка TextView видна, но не поддается отображению после анимации Swift 3
  • Как отправить запрос с помощью alamofire с помощью xml Body
  • Отключение с использованием UIModalPresentationStyle.OverFullScreen приводит к черному экрану
  • Приложение замерзает в реализации «заглянуть и поп» в iPhone 6s
  • Subviews не обрезаны, чтобы прокрутить влево, чтобы удалить UITableViewCell
  • Как отклонить popover Посмотреть контроллер на iPad при прослушивании вне представления: IOS 9
  • Swift SourceKitService Crashed
  • Инициализация свойств Swift, требующих «я» в качестве аргумента
  • Как упорядочить две анимации с задержкой между
  • Добавление точек в нижней части экрана UIPageViewController
  • Interesting Posts

    Swift & Objective-C – сгенерированная ошибка -Swift.h – Не удается найти декларацию интерфейса для UIViewController

    Ошибка при подписании кода: проверка неудачной команды

    Как создать несколько тем / скинов для приложений iphone?

    PHImageManager получает полноразмерное изображение

    Как сохранить текст в строке поиска при увольнении UISearchDisplayController

    SearchBar, как изменить цвет текста?

    Как удалить серая линия поверх UITableView

    Где ушел «оконный» проект?

    Множитель и константа в ConstraintWithItem

    iOS: Добавление наблюдателя в раму UIView.origin.y?

    Измените цвет фона заголовков разделов в UITableView, используя массив заголовков

    Как обновить токен доступа к Facebook автоматически в приложении для iPhone и приложении для Android?

    Где я могу получить значок лупы, используемый в UISearchBar?

    buttonWithType 'недоступен: используйте конструкцию объекта' UIButton (type :)

    Был ли изменен формат токена устройства, предоставленного APN, в моем приложении?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.