为什么MPMoviePlayerController在模拟器中工作,而不是设备?

时间:2010-08-11 18:57:10

标签: iphone objective-c video media mpmovieplayercontroller

我无法让MPMoviePlayerController在设备上运行。它在模拟器中运行良好,播放五秒钟视频,然后将适当的回调(myMovieFinishedCallback:)发送到视图控制器。当它在设备上运行时,电影永远不会出现,即使我可以毫无问题地追踪[player play]。永远不会调用myMovieFinishedCallback:,也没有错误。正在复制所有正确的资源。知道发生了什么事吗?

这是我用来创建和使用播放器的代码,

更新:我已切换到使用MPMoviePlayerViewController。在设备上电影仍然无法播放,我只是无限期地获得旋转进度轮。即使我将播放器设置为MPMovieControlStyleNone,控件也会短暂闪烁 - 有人知道如何解决这个问题吗?如果这有任何不同,电影是五秒钟,大约1.5 MB。

更新:其他电影文件有效,但我无法弄清楚如何让我的工作。我已经尝试过它作为.mov和.mp4,设置似乎是正确的。知道什么会导致MPMoviePlayer仅在设备上永久显示进度轮吗?

- (void) playMovie
{
    NSString *url = [[NSBundle mainBundle] 
                     pathForResource:@"myMovie" 
                     ofType:@"mp4"];

MPMoviePlayerViewController *playerViewController = 
[[MPMoviePlayerViewController alloc] 
 initWithContentURL:[NSURL fileURLWithPath:url]];

playerViewController.moviePlayer.controlStyle = MPMovieControlStyleNone;
playerViewController.moviePlayer.scalingMode = MPMovieScalingModeFill;

[[NSNotificationCenter defaultCenter] 
 addObserver:self
 selector:@selector(myMovieFinishedCallback:)
 name:MPMoviePlayerPlaybackDidFinishNotification
 object:[playerViewController moviePlayer]];

playerViewController.view.frame = movieView.frame;

[movieView addSubview:playerViewController.view];

//---play movie---
MPMoviePlayerController *player = [playerViewController moviePlayer];
[player play];
}   

1 个答案:

答案 0 :(得分:5)

您的代码对我来说很好,所以有两种可能性会浮现在脑海中(可能还有其他可能):

  1. movieView 尚未正确初始化或未设置其框架以使其可见。
  2. 设备不支持您正在显示的视频的视频格式。
  3. 我会尝试使用其他视频。也许您可以确认之前曾在设备上玩过。这是我汇集在一起​​的小型演示项目:http://www.cimgf.com/files/PlayMovie.zip