19 votes

Un élément AVPlayerItem ne peut être associé à plus d'une instance d'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 plante avec une erreur " Terminating app due to uncaught exception 'NSInvalidArgumentException', reason : 'An AVPlayerItem cannot be associated with more than one instance of AVPlayer'" lorsqu'il est utilisé pour diffuser une vidéo à partir d'un serveur. De plus, le lien diffuse la vidéo sans problème dans un navigateur, mais je ne parviens pas à lire la vidéo dans l'application. Merci de m'aider. Merci de votre aide.

99voto

suresh Points 973

J'ai eu le même problème, essayez de définir ContentURL après avoir défini SourceType comme ci-dessous,

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

Source : devforums.apple.com/message/467199

2voto

bluesky719 Points 21

Il peut s'agir d'un problème avec MovieSourceType ; vous lisez un fichier local mais vous utilisez MPMovieSourceTypeStreaming ; il suffit de modifier le type et de réessayer

1voto

ShigaSuresh Points 1038

Vous devez d'abord indiquer au lecteur le type de source, puis définir le contenu du fichier vidéo, comme suit

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];

1voto

Akshay Savaliya Points 90

J'ai utilisé moviePlayerController.movieSourceType = MPMovieSourceTypeUnknown et cela fonctionne pour moi essayez-le .

1voto

Jérémy Lapointe Points 2094

Ce n'est pas une réponse directe à la question, mais si vous obtenez cette erreur après avoir essayé de mettre à jour contentURL, appeler stop() avant résout le problème.

moviePlayerController.stop()
moviePlayerController.movieSourceType = .File
moviePlayerController.contentURL = newURL

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X