2017-03-17 2 views
0

J'ai rencontré le problème qu'après avoir choisi plusieurs vidéos de la bibliothèque (l'une après l'autre), la barre de prévisualisation du lecteur vidéo (UIImagePickerController) est noir (mais peut être lu) . Après avoir choisi le fichier imagePickerController: didFinishPickingMediaWithInfo: est appelé sans UIImagePickerControllerMediaURL. Après cela s'est passé une fois que cela se produira chaque fois que le UIImagePickerController est ouvert. Pour pouvoir choisir un nouveau film, il suffit parfois de redémarrer l'application. Parfois, le téléphone doit même être redémarré (ou peut-être que je suis juste impatient).UIImagePickerControllerSourceTypePhotoLibrary erreur "décodeur occupé" lors de la sélection vidéo

J'ai trouvé ce numéro: AVPlayerItem fails with AVStatusFailed and error code "Cannot Decode". Je crois que le contexte est le même, mais je ne sais pas comment résoudre le problème dans ce cas. Plus loin dans l'application, la lecture vidéo fonctionne parfaitement.

Le code de présentation et de suppression de UIImagePickerController est le suivant.

- (IBAction)openVideoLibrary:(id)sender { 
    if (_allowVideoSelection) { 

     if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary] == NO || ![[UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary] containsObject:(NSString*)kUTTypeMovie]) { 
      return; 
     } 

     UIImagePickerController *pickerController = [[UIImagePickerController alloc] init]; 
     [pickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
     pickerController.mediaTypes = [[NSArray alloc] initWithObjects:(NSString*)kUTTypeMovie, nil]; 
     [pickerController setEditing:NO]; 
     [pickerController setDelegate:self]; 
     [self presentViewController:pickerController animated:YES completion:nil]; 
    } 
} 


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    NSLog(@"info: %@", info); 

    if (picker.sourceType == UIImagePickerControllerSourceTypePhotoLibrary) { 
     [picker dismissViewControllerAnimated:YES completion:^{ 
      if (![info valueForKey:UIImagePickerControllerMediaURL]) { 
       NSLog(@"Error: No media URL"); 
       return; 
      } 
      else { 
       NSLog(@"Yey media"); 
      } 
     }]; 
    } 
} 

Toute idée d'une meilleure/propre façon de choisir plusieurs fichiers multimédias après l'autre? L'option de sélection est intégrée dans le flux de travail à plusieurs étapes, de sorte que les images ne peuvent pas être sélectionnées ensemble.

Répondre

0

Seule une certaine quantité d'AVPlayers peut être exécutée en parallèle. Si un UIViewController contenant une propriété AVPlayer est ignoré, l'AVPlayer n'est pas automatiquement désalloué et reste actif jusqu'à ce que iOS le tue en arrière-plan. Si vous attribuez de manière répétée AVPlayer sans définir AVPlayerLayer.player = nil, à un moment donné, iOS ne permet pas d'instancier un autre AVPlayer. L'erreur: "AVPlayerItem échoue avec AVStatusFailed et le code d'erreur" Can not Decode "arrire