IOS MPMoviePlayerViewController加载无限等待

7

我正在开发一个使用Storyboard的iOS应用。我有一个ViewController:

//movieViewController.h

#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>

@interface movieViewController : UIViewController {

    MPMoviePlayerViewController *moviePlayer;

}

@property (strong, nonatomic) MPMoviePlayerViewController *moviePlayer;
-(void) playMovie;

@end


//movieViewController.m
- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view.
    [self playMovie];
}

-(void)playMovie
{
    NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"movie"
                                                      ofType:@"mov"];

    moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL
                                                     fileURLWithPath:videoPath]];
[self presentMoviePlayerViewControllerAnimated:moviePlayer];
}

当我运行时,我看到我的viewController上有一个“正在加载…”的提示,它需要很长时间才能完成。 enter image description here

1
在调用 [self playMovie] 之前,你不应该等到 viewDidAppear 被调用吗? - sixthcent
2个回答

1
你应该调用-prepareToPlay和/或-play。根据MPMoviePlayerController的文档:

从iOS 5.0开始,为了方便更精细的播放控制,新的电影播放器不会自动准备好播放。


你把MPMoviePlayerController和MPMoviePlayerViewController混淆了。 - Till
1
MPMoviePlayerViewController有一个名为moviePlayer的属性,它是一个MPMoviePlayerController对象。 - zadr
确实如此,但是为了实现OP所要求的功能,没有必要访问该属性。 MPMoviePlayerViewController可以直接完成这项任务。 - Till
那个行为在哪里有记录?据我所知,情况并非如此。 - zadr
调用 prepareToPlayplay 都没有起作用。仍然出现了无限循环。 - sarat

0
-(IBAction)startVideo:(id)sender { NSURL *video = [[NSURL alloc] initWithString:@"http://www.w3schools.com/html/movie.mp4"]; MPMoviePlayerViewController *controller = [[MPMoviePlayerViewController alloc]initWithContentURL:video]; controller.view.frame = CGRectMake(20, 50, 280, 180);
controller.moviePlayer.view.center = self.view.center; [self.view addSubview:controller.view];
[controller.moviePlayer prepareToPlay]; [controller.moviePlayer play]; }

1
请问您能否添加一些文字来解释您的解决方案? - GHC

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