Saving video to firestore and getting video url
Sat Jan 08 2022 09:48:57 GMT+0000 (Coordinated Universal Time)
Saved by @hasnat
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { if let videoUrl = info[UIImagePickerController.InfoKey.mediaURL] as? URL { HelperFunction.upload(file: videoUrl) self.videoURL = videoUrl } dismiss(animated: true, completion: nil) } static func upload(file: URL) { let name = "\(Int(Date().timeIntervalSince1970)).mp4" do { let data = try Data(contentsOf: file) let storageRef = Storage.storage().reference().child("Videos").child(name) if let uploadData = data as Data? { let metaData = StorageMetadata() metaData.contentType = "video/mp4" storageRef.putData(uploadData, metadata: metaData , completion: { (metadata, error) in if let error = error { print("Error: \(error)") }else{ storageRef.downloadURL { (url, error) in guard let downloadURL = url else { return } // completion(downloadURL, nil) print("Download URL: \(downloadURL)") } } }) } }catch let error { print(error.localizedDescription) } } /// func convertVideo(toMPEG4FormatForVideo inputURL: URL, outputURL: URL, handler: @escaping (AVAssetExportSession) -> Void) { try! FileManager.default.removeItem(at: outputURL as URL) let asset = AVURLAsset(url: inputURL as URL, options: nil) let exportSession = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetHighestQuality)! exportSession.outputURL = outputURL exportSession.outputFileType = .mp4 exportSession.exportAsynchronously(completionHandler: { handler(exportSession) }) }
Comments