web-dev-qa-db-fra.com

Un AVPlayerItem ne peut pas être associé à plus d'une instance de AVPlayer '

-(IBAction)play:(id)sender
{

    thumbImageView.alpha=0.0;

    NSString *stringvideo=[NSString stringWithFormat:@"http://streaming-service",[[NSUserDefaults standardUserDefaults]valueForKey:@"VideoIdselected"]];

    NSString *videoURLString = stringvideo;

       NSURL *url = nil;

  url = [NSURL URLWithString:videoURLString];





    self.moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:url];




    if (self.moviePlayerController)
    {
        /* Save the movie object. */
          [self setMoviePlayerController:self.moviePlayerController];


        [self installMovieNotificationObservers];

        /* Specify the URL that points to the movie file. */
        [self.moviePlayerController setContentURL:url];


        [self.moviePlayerController setMovieSourceType:MPMovieSourceTypeStreaming]; // for streaming



        self.moviePlayerController.controlStyle = MPMovieControlStyleEmbedded;

        // [self.videoPlayer setMovieSourceType:MPMovieSourceTypeStreaming];

      // self.moviePlayerController.shouldAutoplay = YES;

        [self.moviePlayerController.view setFrame: CGRectMake(0, 0, 320,160)];



        [self.moviePlayerController setFullscreen:NO animated:YES];

        [self.moviePlayerController view].backgroundColor = [UIColor lightGrayColor];

        [self.view addSubview:self.moviePlayerController.view];

        [self.view bringSubviewToFront:self.moviePlayerController.view];
        [self.moviePlayerController prepareToPlay];
        //self.moviePlayerController.useApplicationAudioSession = NO;

        [self.moviePlayerController play];





    }

}

Bonjour, j'essaie de diffuser une vidéo sur mon application iPhone. Le code lit un fichier local mais se bloque avec l'erreur "Arrêt de l'application en raison d'une exception non interceptée" NSInvalidArgumentException ", raison:" Un AVPlayerItem ne peut pas être associé à plus d'une instance de AVPlayer "lorsqu'il est utilisé pour diffuser une vidéo à partir d'un serveur. De plus, le lien diffuse la vidéo dans un navigateur, mais je ne suis toutefois pas en mesure de lire la vidéo dans l'application. S'il vous plaît aider. Merci

19
Andy Khatter

Si vous aviez le même problème, essayez de définir ContentURL après Définition du type de source comme ci-dessous,

moviePlayerController_ = [[MPMoviePlayerViewController alloc] init];
moviePlayerController_.movieSourceType = MPMovieSourceTypeStreaming;
[moviePlayerController_.moviePlayer setContentURL:url];

Source: devforums.Apple.com/message/467199

99
suresh

Cela pourrait être un problème avec MovieSourceType; vous jouez un fichier local mais utilisez MPMovieSourceTypeStreaming; il suffit de modifier le type et d'essayer à nouveau

2
bluesky719

Pas une réponse directe à la question, mais si vous obtenez cette erreur après avoir tenté de mettre à jour contentURL, appelez stop () avant pour résoudre le problème.

moviePlayerController.stop()
moviePlayerController.movieSourceType = .File
moviePlayerController.contentURL = newURL
1
Jérémy Lapointe

Vous devez d’abord informer le lecteur du type de source que vous définissez pour le contenu du fichier vidéo; comme ça

Voici deux types d'URL; si l'URL est comme ceci vous écrivez cette fonction

 NSString *aStr=@"http://www.my url like this.com/video/videos/review/Michale JACKSON  AUDIENCE Comment.mp4";   

aStr = [aStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

ou (deuxième)

NSString *aStr=@"http://www.normal url.com/video.mp4"

// after add your url string to this url

NSURL *url=[NSURL URLWithString:aStr];
MPMoviePlayerViewController *MPlayer = [[MPMoviePlayerViewController alloc]init];
MPlayer.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
[MPlayer.moviePlayer setContentURL:url];
[self presentMoviePlayerViewControllerAnimated:MPlayer];
1
ShigaSuresh

j'ai utilisé moviePlayerController.movieSourceType = MPMovieSourceTypeUnknown ses travaux pour moi .. essayez-le ..

1
Akshay Savaliya