MPMoviePlayer无法播放视频。

8

MPMoviePlayer无法播放视频。我正在运行iOS 7,并在设备和模拟器上遇到相同的错误:

2013-10-02 12:49:18.246 xxxx[688:60b] _itemFailedToPlayToEnd: {
kind = 1;
new = 2;
old = 0;

我尝试从互联网和文件系统播放视频,但没有成功。我的代码非常简单:

    self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://stream.qtv.apple.com/events/mar/123pibhargjknawdconwecown/12oihbqeorvfhbpiubqnfv3_650_ref.mov"]];
    self.moviePlayer.view.frame = self.view.bounds;
    self.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
    [self.view addSubview:self.moviePlayer.view];
    [self.moviePlayer prepareToPlay];

列出的URL是一个有效的电影: http://stream.qtv.apple.com/events/mar/123pibhargjknawdconwecown/12oihbqeorvfhbpiubqnfv3_650_ref.mov

我也尝试过使用MPMoviePlayerViewController,但那也没有起作用。


请参见https://dev59.com/RH3aa4cB1Zd3GeqPXQRN,该链接中涉及播放视频时出现“ItemFailedToPlayToEnd”错误的解决方案。 - Hasan Sawaed
3个回答

3

MPMovieSourceTypeStreaming 在iOS 7上似乎存在缺陷。在我的应用程序中,我从网络流式传输视频(与您相同),并且使用此源类型问题消失:

self.moviePlayer.movieSourceType = MPMovieSourceTypeFile;

我知道这很奇怪,因为我们正在流传视频,但这是我唯一有效的解决方案。

希望有所帮助 :)


1

1. 将mov文件转换为mp4文件,似乎播放器不支持mov文件。

2. 删除代码self.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;

或者改成self.moviePlayer.movieSourceType = MPMovieSourceTypeFile;

3. 在[self.view addSubview:self.moviePlayer.view];之后添加代码[self.moviePlayer setFullscreen:YES];

注意:必须按照正确的顺序进行操作,否则只能听到声音而无法观看电影。

如果您想使用MPMoviePlayerViewController,请按照以下方式操作:

 MPMoviePlayerViewController *moviePlayerViewController;
   moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://.../movie.mp4"]];//note:mp4 file
    [self presentMoviePlayerViewControllerAnimated:moviePlayerViewController];

重要提示:如果URL错误,您将收到相同的错误。例如:这是错误的
moviePlayer=[[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"movie.mp4"]];

进行更正:

如果URL是一个网页链接,则像这样:

moviePlayer=[[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://..../movie.mp4"]];

如果文件是本地文件,则如下所示:

else if the file is a local file,then like this:

moviePlayer=[[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"movie" ofType:@"mp4”]]];

0

试一下这个,抱歉回复晚了:

NSURL    *fileURL    =   [NSURL URLWithString:@"file  url from the internet "];
    MPMoviePlayerViewController *moviePlayerController = [[MPMoviePlayerViewController alloc] initWithContentURL:fileURL];

    [moviePlayerController.moviePlayer setFullscreen:YES animated:YES];
    [moviePlayerController.moviePlayer.view setFrame: self.view.bounds];
    [moviePlayerController.moviePlayer setControlStyle:MPMovieControlStyleFullscreen];
    [moviePlayerController.moviePlayer setMovieSourceType:MPMovieSourceTypeFile];

    [self presentMoviePlayerViewControllerAnimated:moviePlayerController];
    [moviePlayerController.moviePlayer prepareToPlay];
    [moviePlayerController.moviePlayer play];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接