Я пытаюсь получить миниатюру видео, которое я выбрал.
Похоже, он создает миниатюру, но вылетает при загрузке в firebase.
Он падает в thumbnailStorageRef
я думаю.
Вот соответствующий код:
guard let imagePickerUrl = info[UIImagePickerControllerMediaURL] as? URL else { return }
let videoUrl = imagePickerUrl
// Generate image thumbnail.
let asset: AVAsset = AVAsset(url: videoUrl as URL)
let imageGenerator = AVAssetImageGenerator(asset: asset)
imageGenerator.appliesPreferredTrackTransform = true
var time = asset.duration
time.value = min(time.value, 3)
do {
let thumbnailImage = try imageGenerator.copyCGImage(at: time , actualTime: nil)
let image = UIImage(cgImage: thumbnailImage)
let imageData = UIImagePNGRepresentation(image)!
let thumbnailStorageRef = FIRStorage.storage().reference()
thumbnailStorageRef.child("thumbnails/" + randomString(length: 20) + ".png")
thumbnailStorageRef.put(imageData, metadata: nil, completion: { (thumbnailMeta, error) in
if error != nil {
print("An error has occured while uploading thumbnail:",error ?? "")
} else {
print("Thumbnail upload to database was successfull", thumbnailMeta?.downloadURL() ?? "")
}
})
} catch {
print("An error has occurred while making thumbnail:")
}
При сбое консоль ошибок пишет:
2017-08-11 17:19:08.656 Koala[17914:491998] * Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "* -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: попытка вставить нулевой объект из объектов[1]' *** Первый вызов стека вызовов:
Я не знаю, что пытается сказать это сообщение об ошибке, может быть, изображение, которое пытается загрузить, равно нулю? Я не уверен.