web-dev-qa-db-ja.com

AVPlayerItemは、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];





    }

}

こんにちは私は私のiphoneアプリでビデオをストリーミングしようとしています。コードはローカルファイルを再生しますが、サーバーからビデオをストリーミングするために使用すると、「キャッチされない例外 'NSInvalidArgumentException'、理由: 'AVPlayerItemをAVPlayerの複数のインスタンスに関連付けることができません'」というエラーでクラッシュします。また、リンクはブラウザでビデオを完全にストリーミングしますが、アプリでビデオを再生することはできません。助けてください 。ありがとう

19
Andy Khatter

同じ問題が発生した場合は、以下のようにSourceTypeを設定した後、ContentURLを設定してみてください。

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

ソース: devforums.Apple.com/message/467199

99
suresh

MovieSourceTypeに問題がある可能性があります。ローカルファイルを再生していますが、MPMovieSourceTypeStreamingを使用しています。タイプを変更して再試行するだけです

2
bluesky719

質問に対する直接の答えではありませんが、contentURLを更新しようとした後にこのエラーが発生した場合は、問題を解決する前にstop()を呼び出してください。

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

まず、ビデオファイルのコンテンツを設定したソースタイプをプレーヤーに通知する必要があります。このような

これは2種類のURLです。 URLがこのような場合は、この関数を記述します

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

aStr = [aStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

または(2番目)

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

私はmoviePlayerController.movi​​eSourceType = MPMovieSourceTypeUnknownを使用しました。

1
Akshay Savaliya