2010-02-08 3 views
5

J'utilise UIImagePickerController pour enregistrer une vidéo avec le sourceType défini sur UIImagePickerControllerSourceTypeCamera.UIImagePickerController avec la source de la caméra: le découpage vidéo ne fonctionne pas

J'ai défini allowsEditing sur true pour que la vidéo puisse être modifiée avant le retour du sélecteur. Mais après avoir édité la vidéo en utilisant l'interface de recadrage et en appuyant sur "Choisir", je récupère seulement l'enregistrement original dans le délégué, pas la version rognée. Qu'est-ce que je fais mal? J'utilise iPhone OS 3.1.3. Je me souviens que cela fonctionnait dans une version antérieure, mais il semble échouer dans le dernier système d'exploitation. Toute aide est appréciée? Par ailleurs, j'ai confirmé que si la source de la vidéo est UIImagePickerControllerSourceTypeSavedPhotosAlbum, le découpage fonctionne dans la version 3.1.3. Donc couper avec la source car la caméra est défaillante. Il est intéressant de noter que le bouton "Choisir" apparaît avec l'album photo/rouleau de photos comme source, et peu de temps après avoir cliqué dessus, le contrôleur affiche un message disant "La vidéo est en train d'être rognée ...". Je ne reçois pas ce message lorsque j'utilise la source de la caméra.

Voici un extrait du code que j'utilise pour enregistrer une vidéo en utilisant la source de la caméra.

- (void) recordVideo { 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    picker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie]; 
    picker.videoQuality = UIImagePickerControllerQualityTypeHigh; 

    [self presentModalViewController:picker animated:YES]; 
    [picker release]; 
} 

Ma mise en œuvre du délégué est la suivante:

- (void)imagePickerController:(UIImagePickerController *)picker 
didFinishPickingMediaWithInfo: (NSDictionary *)info { 

    [picker dismissModalViewControllerAnimated:YES]; 
    self.videoPath = [[info objectForKey:UIImagePickerControllerMediaURL] path]; 
    ... 
} 

Merci beaucoup,

kris.

Répondre

0

Juste couru dans moi-même ... et trouvé ce post en cherchant une solution.

ressemble à la seule façon de contourner cela est de copier le fichier dans le répertoire de votre application, puis ouvrez le UIVideoEditorController ...

Quelqu'un sait si ce UIImagePickerController vidéo nouvellement capturé ne pas être question recadrée est un bogue dans le SDK, ou faisons-nous quelque chose de mal?

+0

Cela semble intentionnel: une fois que l'utilisateur a édité un élément sélectionné, par exemple en rognant une image ou en découpant un film, l'URL continue de pointer vers la version originale de l'élément sélectionné. http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImagePickerControllerDelegate_Protocol/UIImagePickerControllerDelegate/UIImagePickerControllerDelegate.html#//apple_ref/doc/uid/TP40007069 – James

+3

Non, ce n'est pas si simple. Lors de la sélection d'une image, les images éditées et originales sont renvoyées. Et lors de la sélection d'une vidéo avec sorceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum, une vidéo rognée est renvoyée. A titre d'observation, à chaque fois qu'une vidéo non tronquée est renvoyée, la dict contient également les clés @ "_ UIImagePickerControllerVideoEditingStart" et @ "_ UIImagePickerControllerVideoEditingEnd" avec les temps de début et d'arrêt rognés (en secondes). Je suppose que nous devons les chercher et faire la coupe nous-mêmes (si présent) – wombat57

Questions connexes