2012-10-23 31 views
3

我感到困惑:如何发挥视频在iOS6的

MPMoviePlayerViewController和的MPMoviePlayerController

是什么在iOS6的本地播放视频的最佳方式?

这是我的代码

NSURL * url = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: @ "17" OfType: @ "mov"]]; 

    MoviePlayer = [[MPMoviePlayerViewController alloc] 
        initWithContentURL: url]; 
    [self presentMoviePlayerViewControllerAnimated: MoviePlayer]; 
    [moviePlayer.moviePlayer play]; 
    [[NSNotificationCenter defaultCenter] addObserver: self selector: @ selector (moviePlayerPlaybackStateChanged :) name: MPMoviePlayerPlaybackStateDidChangeNotification object: nil]; 
} 


-(void)moviePlayerPlaybackStateChanged:(NSNotification *)notification { 


} 

回答

8

MPMoviePlayerViewController是用于播放全屏视频,并主要用于在手机上。

MPMoviePlayerController可以用于嵌入式视频,即在任何iPad上都不是全屏。您需要在故事板中将您的场景拖到空白视图中,并为其指定所需的大小。然后,在代码中,将电影播放器​​放置在该子视图中。你的代码的第一部分应该在viewDidLoad中;

//movieplayer initialization 
NSString *path = [[NSBundle mainBundle] pathForResource:@"videoName" ofType:@"m4v"]; 
NSURL *videoURL = [NSURL fileURLWithPath:path]; 
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
[moviePlayer setControlStyle:MPMovieControlStyleNone]; // for custom controls, for default controls you can leave this line out. 

这部分进入viewWillAppear;

moviePlayer.repeatMode = MPMovieRepeatModeOne; // for looping 
[moviePlayer.view setFrame: self.videoSuper.bounds]; 
[self.videoSuper addSubview: moviePlayer.view]; 
[moviePlayer prepareToPlay]; 
[moviePlayer play]; 

其中videoSuper是故事板中添加的子视图。务必正确连接它;

//in .h 
@property (weak, nonatomic) IBOutlet UIView *videoSuper; 
+0

我试过这样做,但由于某种原因它不起作用。我用xib创建了一个单视图项目,但没有任何故事板。添加了一个UIView并将其与文件所有者连接起来。我看到的只是一个白色的屏幕,没有音频。任何关于我可能做错了什么的帮助或建议?有没有更好的方式来运行视频,我不知道? – vnchopra

+0

您是否将连接到视图的插座命名?在我知道很多关于命名约定的知识之前,我写了这个。我称之为videoSuper的应该称为videoView或类似的东西,它应该是你的h文件中的一个IBOutlet,它连接到NIB中的视图。 (我使用故事板,所以细节取决于你。)在故事板中,您可以右键单击故事板中的视图,然后拖动到声明属性的区域中的头文件,弹出框会给您一个命名的机会。将它命名为videoView,然后你的控制器将拥有一个你可以在代码中引用的属性。 – timquinn

+0

[self.videoView addSubview:moviePlayer.view]; – timquinn