Iphone AVPlayerItem不能与AVPlayer';的多个实例关联;

Iphone AVPlayerItem不能与AVPlayer';的多个实例关联;,iphone,ios,video,avplayer,Iphone,Ios,Video,Avplayer,嗨,我正在尝试在我的iphone应用程序上播放视频。该代码播放本地文件,但因错误而崩溃 “由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:当用于从服务器流式传输视频时,“AVPlayerItem不能与AVPlayer的多个实例关联”。此外,链接流视频在浏览器中绝对好,但我无法在应用程序中播放视频。请帮忙。 谢谢这可能是电影资源类型的问题;您正在播放本地文件,但使用的是MPMovieSourceTypeStreaming;只需修改类型并重试遇到同样的

嗨,我正在尝试在我的iphone应用程序上播放视频。该代码播放本地文件,但因错误而崩溃 “由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:当用于从服务器流式传输视频时,“AVPlayerItem不能与AVPlayer的多个实例关联”。此外,链接流视频在浏览器中绝对好,但我无法在应用程序中播放视频。请帮忙。
谢谢

这可能是电影资源类型的问题;您正在播放本地文件,但使用的是
MPMovieSourceTypeStreaming
;只需修改类型并重试

遇到同样的问题,请在设置SourceType后尝试设置ContentURL,如下所示

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





    }

}

来源:

首先,在设置视频文件内容之前,您必须通知播放机源类型;像这样

这里有两种类型的URL;如果url是这样的,则编写此函数

moviePlayerController_ = [[MPMoviePlayerViewController alloc] init];
moviePlayerController_.movieSourceType = MPMovieSourceTypeStreaming;
[moviePlayerController_.moviePlayer setContentURL:url];
或(第二个)


我使用了moviePlayerController.movieSourceType=MPMovieSourceTypeUnknown它对我有用。。试试看。

这不是问题的直接答案,但如果在尝试更新contentURL后出现此错误,请在解决问题之前调用stop()

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

可能是“播放”方法运行了两次吗?更新:刚刚发现视频编码有问题…尝试流式传输示例链接,效果很好。你还记得编码器有什么问题吗?我们有相同的问题,到目前为止,我们还没有解决这个问题的运气。看看这个!这解决了我的问题。这也是正确的,我可以确认它刚刚解决了我的问题,谢谢!
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];
moviePlayerController.stop()
moviePlayerController.movieSourceType = .File
moviePlayerController.contentURL = newURL