Я пытаюсь использовать AVAssetExportSession на видео, выбранного в расширении доли и получениеAVAssetExportSession в расширении доли
Error Domain = NSURLErrorDomain Код = -3000 «Невозможно создать файл» UserInfo = {NSLocalizedDescription = Невозможно создать файл , NSUnderlyingError = 0x14811fdb0 {Error Domain = NSOSStatusErrorDomain Code = -12124 "(нуль)"}}
Но я могу создать файл вручную в то же NSURL без ошибок. Вот функция, я использую
func reencodeVideo() {
let videoAsset = AVURLAsset(URL: video.url)
let videoTrack = videoAsset.tracksWithMediaType(AVMediaTypeVideo)[0] as AVAssetTrack
print(videoTrack.estimatedDataRate)
let exportSession = AVAssetExportSession(asset: videoAsset, presetName: AVAssetExportPreset1920x1080)
guard let outputURL = uploadableFileURL else {
return
}
let fileManager = NSFileManager.defaultManager()
// let created = fileManager.createFileAtPath(outputURL.path!, contents: nil, attributes: nil)
if let path = outputURL.path where fileManager.fileExistsAtPath(path) {
print("file exists")
}
do {
try fileManager.removeItemAtURL(outputURL)
print("deleted")
} catch {
print(error)
}
exportSession?.outputURL = outputURL
exportSession?.outputFileType = AVFileTypeQuickTimeMovie
exportSession?.exportAsynchronouslyWithCompletionHandler{
print(exportSession?.status)
}
}
private var uploadableFileURL: NSURL? {
guard let tempFileName = video.url.lastPathComponent else {
return nil
}
let fileManager = NSFileManager.defaultManager()
guard let containerURL = fileManager.containerURLForSecurityApplicationGroupIdentifier(Constants.appGroupIdentifier) else {
return nil
}
return containerURL.URLByAppendingPathComponent("videoFile.mov")
}
Я успешно созданный файл в том же каталоге, но AVAssetExportSession возвращает ошибку там. Любые идеи, что я делаю неправильно?
Я пробовал использовать AVAssetReader
и AVAssetWriter
, а AVAssetWriter
возвращает ту же ошибку при попытке запустить. Процесс кодирования завершается успешно, если я использую папку «Документы» и не работает только при использовании контейнера общей группы приложений.
Это помогло, спасибо – Ruslan