Après avoir sélectionné une vidéo en utilisant UIImagePickerController
, je peux obtenir la taille du fichier vidéo en utilisant [defaultRepresentation size]
.
Cependant, si j'active l'option de rognage du sélecteur, [defaultRepresentation size]
renvoie la même taille de fichier que la vidéo originale non rognée.
Est-ce que quelqu'un aurait une méthode pour récupérer la taille du fichier de la vidéo rognée ?
Grandement apprécié...
Oui, j'aurais dû inclure un peu de code. Désolé.
Ce que j'essaie de faire, c'est permettre à l'utilisateur de choisir et rogner une vidéo existante, puis télécharger la version rognée. J'aimerais avoir la taille du fichier de la version rognée pour remplir la barre de progression pendant le téléversement. J'aimerais aussi avoir la durée de la version rognée.
La méthode d'appel est :
-(IBAction)selectVideoPressed:(id)sender
{
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
{
UIImagePickerController *videoPicker = [[UIImagePickerController alloc] init];
[videoPicker setDelegate: self];
[videoPicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[videoPicker setMediaTypes:[NSArray arrayWithObjects:(NSString *)kUTTypeMovie, nil]];
[videoPicker setVideoQuality:vvi.videoQuality];
[videoPicker setAllowsEditing:YES];
[videoPicker setModalTransitionStyle:gTransitionStyle];
[self presentViewController:videoPicker animated:YES completion:Nil];
}
}
La méthode du délégué qui se déclenche une fois que l'utilisateur a rogné et appuyé sur Choisir est :
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[vvi setRawSourceVideoFileURL:[info objectForKey:UIImagePickerControllerMediaURL]];
[vvi setSourceVideoURL:[info objectForKey:UIImagePickerControllerReferenceURL]];
ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];
ALAssetsLibraryAssetForURLResultBlock resultBlock = ^(ALAsset *myAsset)
{
// Informations sur les métriques de la vidéo.
[vvi setVideoDuration:[myAsset valueForProperty:ALAssetPropertyDuration]];
[vvi setVideoOrientation:[myAsset valueForProperty:ALAssetPropertyOrientation]];
NSDate *videoDate = [myAsset valueForProperty:ALAssetPropertyDate];
[vvi setVideoDateString:[videoDate descriptionWithLocale:[NSLocale currentLocale]]];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:gShortDateFormat];
[vvi setShortVideoDateString:[dateFormatter stringFromDate:videoDate]];
ALAssetRepresentation *myAssetRepresentation = [myAsset defaultRepresentation];
[vvi setVideoAssetSize:[NSNumber numberWithLongLong:[myAssetRepresentation size]]];
NSLog(@"Durée : %@", vvi.videoDuration);
NSLog("Taille : %@", vvi.videoAssetSize);
};
....
vvi
est juste ma propre classe personnalisée. Les deux NSLog retournent la durée et la taille de la vidéo originale non rognée. La vidéo pointée avec [vvi setRawSourceVideoFileURL:[info objectForKey:UIImagePickerControllerMediaURL]];
retourne effectivement la vidéo rognée correctement.
Merci beaucoup !