2015-03-25 1 views
8

Sono nuovo per lo sviluppo di app, quindi questa potrebbe essere una domanda banale ma per favore AIUTO !!salvataggio video; usando UIImagePickerController; IOS 8 Swift

Sto tentando di salvare un video sul Rullino foto utilizzando la classe UIImagePickerController. Finora ho avuto successo tirando su la fotocamera e salvando un'immagine. Sono anche stato in grado di registrare video, ma quando premo "usa video" non viene salvato nel rullino fotografico.

Di seguito è riportata la funzione didFinishPickingMediaWithInfo allegata.

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) 
{ 
    let mediaType = info[UIImagePickerControllerMediaType] as NSString 

    self.dismissViewControllerAnimated(true, completion: nil) 

    if mediaType.isEqualToString(kUTTypeImage as NSString) 
    { 
     let image = info[UIImagePickerControllerOriginalImage] as UIImage 

     if (newMedia == true) 
     { 
      UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil) 
     } 

     else if mediaType.isEqualToString(kUTTypeMovie as NSString) 
     { 
      let videoPath = info[UIImagePickerControllerMediaURL] as NSString 

      if(newMedia == true) 
      { 
       UISaveVideoAtPathToSavedPhotosAlbum(videoPath, self, 
        "image:didFinishSavingWithError:contextInfo:", nil) 
      } 
     } 
    } 
} 

Ecco la routine useVideo.

@IBAction func useVideo(sender: AnyObject) 
{ 
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) 
    { 

     let imagePicker = UIImagePickerController() 

     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.Camera 
     imagePicker.mediaTypes = [kUTTypeMovie as NSString] 
     imagePicker.allowsEditing = false 

     self.presentViewController(imagePicker, animated: true, completion: nil) 

     newMedia = true 

    } 
} 

Ecco la telecamera.

@IBAction func useCameraRoll(sender: AnyObject) { 
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum){ 

     let imagePicker = UIImagePickerController() 

     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary 
     imagePicker.mediaTypes = [kUTTypeImage as NSString] 
     imagePicker.mediaTypes = [kUTTypeMovie as NSString] 
     imagePicker.allowsEditing = false 

     self.presentViewController(imagePicker, animated: true, completion: nil) 

     newMedia = false 
    } 
} 
+1

'imagePicker .mediaTypes' dovrebbe essere impostato in questo modo -> 'imagePicker.mediaTypes = [kUTTypeImage as String, kUTTypeImage as String]' – Husam

risposta

5

Non si è abbinati se si è vicini.

 if mediaType.isEqualToString(kUTTypeImage as NSString) 
     { 
      let image = info[UIImagePickerControllerOriginalImage] as UIImage 

      if (newMedia == true) 
      { 
       UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil) 
      } 

} // < --here si chiude se la condizione per un'immagine add}

 else if mediaType.isEqualToString(kUTTypeMovie as NSString) 
      { 
+0

Grazie per l'input ma non ha funzionato. Ha causato un errore di trap. – Matthew

+0

Spero non abbiate copiato/incollato **} ** è solo per mostrare dove è possibile inserire} – user3344236

+0

No, ho semplicemente chiuso la parentesi se di kUTTypeImage. – Matthew

0

È possibile salvare video utilizzando questo, speriamo vi sia utile -

public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) 
{ 
    let mediaType = info[UIImagePickerControllerMediaType] as! NSString 

    if mediaType.isEqual(to: kUTTypeMovie as NSString as String) 
    { 
     // Is Video 
     let url: URL = info[UIImagePickerControllerMediaURL] as! URL 

     assetsLibrary.writeVideoAtPath(toSavedPhotosAlbum: url, completionBlock: { 
      (nsurl, error) -> Void in 
      if let theError = error{ 
       print("Error saving video = \(theError)") 
       self.dismiss(animated: true, completion: nil) 
      } 
      else { 
       print("no errors happened") 
      } 
     }) 
    } 
}