iPhone4, iOS 4.3.3, iOS SDK4.3MPMoviePlayerController - Durée toujours 0
Salut à tous,
Je crée une fonction de téléchargement vidéo. Les vidéos sont récupérées à l'aide de UIImagePickerController et peuvent être capturées à l'aide de la caméra ou sélectionnées dans la photothèque. J'ai une contrainte d'application de 60 secondes maximum. Ceci est facilement réalisé lors de l'enregistrement de la vidéo en utilisant la caméra via:
// Vidéos limite à 60 secondes
[sélecteur setVideoMaximumDuration: 60];
Toutefois, lorsque la vidéo est sélectionnée à partir de la photothèque de la seule façon que je vois d'obtenir la durée est par la propriété de la durée MPMoviePlayerController comme suit:
// MediaType peut être kUTTypeImage ou kUTTypeMovie.
NSString * mediaType = [info objectForKey: UIImagePickerControllerMediaType]; NSLog (@ "% @", mediaType);
// si son film
if ([mediaType isEqualToString:(NSString*)kUTTypeMovie]) {
// get the URL
NSURL* mediaURL = [info objectForKey:UIImagePickerControllerMediaURL];
NSLog(@"%@",mediaURL);
// can use MPMoviePlayerController class to get duration
int duration = -1;
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: mediaURL];
if (moviePlayer != nil) {
duration = moviePlayer.duration;
NSString *path = moviePlayer.contentURL;
[moviePlayer release];
}
mais la durée est toujours 0. Je sais que la vidéo a une durée, car la durée est affichée dans le cadre du sous-titre lors de la sélection dans la bibliothèque de photos. Je comprends que la durée n'est pas toujours disponible mais dans ce cas la durée est affichée dans la photo lib. Je vérifie également la propriété contentURL et il a un bon rapport qualité-prix. Je suis capable de récupérer le fichier, obtenir sa taille de fichier, etc, donc je sais que le fichier NSURL du fichier est bon ...
Merci!
Vous pouvez écouter le MPMovieDurationAvailableNotification. Cela nécessiterait que vous gardiez le MoviePlayer assez longtemps pour pouvoir déterminer la durée. La photothèque utilise probablement une valeur mise en cache. – omz
@imobilizer Si la réponse ci-dessous a aidé, s'il vous plaît marquer est comme accepté. – memmons