После прочтения нескольких руководств like this и просмотра другого кода, экспортирующего видео, мы по-прежнему не можем решить проблему.Видео не всегда экспортируется в Camera Roll: NSFileManager's removeItemAtPath не блокирует?
Иногда новое видео экспортируется в Camera Roll, а иногда и нет. Мы не можем даже последовательно воспроизвести проблему.
Единственная проблема, которую мы можем представить, заключается в том, что NSFileManager.defaultManager().removeItemAtPath
не является блокирующим вызовом, но никакая документация не предполагает, что он асинхронный, поэтому мы предполагаем, что это не так.
Каждый раз, когда вызывается окно «Сохраненное видео» println
, происходит замыкание, указывающее, что видео было успешно записано в Camera Roll, но мы не видим видео.
Рекомендации по устранению неполадок?
Код:
// -- Get path
let fileName = "/editedVideo.mp4"
let allPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let docsPath = allPaths[0] as! NSString
let exportPath = docsPath.stringByAppendingFormat(fileName)
let exportUrl = NSURL.fileURLWithPath(exportPath as String)!
println(exportPath)
// -- Remove old video?
if NSFileManager.defaultManager().fileExistsAtPath(exportPath as String) {
println("Deleting existing file\n")
NSFileManager.defaultManager().removeItemAtPath(exportPath as String, error: nil)
}
// -- Create exporter
let exporter = AVAssetExportSession(asset: mixComposition, presetName: AVAssetExportPresetHighestQuality)
exporter.videoComposition = mutableComposition
exporter.outputFileType = AVFileTypeMPEG4
exporter.outputURL = exportUrl
exporter.shouldOptimizeForNetworkUse = true
// -- Export video
exporter.exportAsynchronouslyWithCompletionHandler({
self.exportDidFinish(exporter)
})
}
func exportDidFinish(exporter: AVAssetExportSession) {
println("Finished exporting video!")
// Write out video to photo album
let assetLibrary = ALAssetsLibrary()
assetLibrary.writeVideoAtPathToSavedPhotosAlbum(exporter.outputURL, completionBlock: {(url: NSURL!, error: NSError!) in
println("Saved video \(exporter.outputURL)")
if (error != nil) {
println("Error saving video")
}
})
}
привет знак любой шанс, что вы можете помочь с этим вопросом? http://stackoverflow.com/questions/34704032/swift-video-records-at-one-size-but-renders-at-wrong-size. благодаря! – Crashalot
Я ответил @ Crashalot http://stackoverflow.com/a/34794554/51700 –
Большое спасибо! – Crashalot