19
-(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 实例关联’”而崩溃。此外,该链接在浏览器中流式传输视频绝对正常,但我无法在应用程序中播放视频。请帮忙 。谢谢

4

5 回答 5

99

Had same issue, try setting ContentURL after Setting the SourceType like below,

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

Source: devforums.apple.com/message/467199

于 2013-02-12T16:02:50.057 回答
2

这可能是一个问题MovieSourceType;您正在播放本地文件,但使用MPMovieSourceTypeStreaming; 只需修改类型并重试

于 2013-01-05T02:57:13.737 回答
1

我用过moviePlayerController.movi​​eSourceType = MPMovieSourceTypeUnknown它对我有用..试试看..

于 2015-02-06T05:53:14.803 回答
1

首先,您必须告知播放器您设置视频文件内容的源类型;像这样

这是两种类型的网址;如果 url 是这样的,你写这个函数

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

aStr = [aStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

或(第二个)

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];
于 2014-12-10T11:30:33.387 回答
1

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

moviePlayerController.stop()
moviePlayerController.movieSourceType = .File
moviePlayerController.contentURL = newURL
于 2016-07-21T14:55:58.467 回答