iOS播放視頻
iOS sdk為播放視頻提供了非常簡便方法,提供的MPMoviePlayerViewController類作為開發使用,在iOS4以前的版本是MPMoviePlayerController。
在iPhone開發規范中禁止使用私有API播放視頻,因此播放畫面的控制的控件都是有iPhone提供好的,我們沒有別的選擇。我們能做的:
加載URL中視頻
播放、暫停視頻
用戶控制行為和縮放模式
產生通知
MPMoviePlayerController還可以播放互聯網上的視頻文件。但是建議你先將視頻文件下載到本地,然後播放。如果你不這樣做,iOS可能會拒絕播放很大的視頻文件。
這個類定義在MediaPlayer framework中。在你的應用程序中,先添加這個引用,然後修改MediaPlayerViewController.h文件。
ViewController.h#import
#import
@interface ViewController : UIViewController
{
MPMoviePlayerViewController *moviePlayerView;
}
- (IBAction)playMovies:(id)sender;
-(void)playingDone;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//初始化通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(playingDone) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
}- (IBAction)playMovies:(id)sender {
//初始化播放器並且設定播放模式
moviePlayerView = [[MPMoviePlayerViewController alloc]initWithContentURL:[NSURL fileURLWithPath: [[NSBundle mainBundle]pathForResource:@"po" ofType:@"mp4"]]];
//設定播放模式
moviePlayerView.moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
//控制模式(觸摸)
moviePlayerView.moviePlayer.scalingMode = MPMovieScalingModeAspectFill;
// MPMovieControlStyleNone
//MPMovieControlStyleEmbedded
//MPMovieControlStyleDefault
//開始播放
[[[UIApplication sharedApplication]keyWindow]addSubview:moviePlayerView.view];
/*視頻文件可以播放資源目錄、沙箱目錄和網絡播放。本例中我們采用資源目錄。
moviePlayerView.moviePlayer屬性是MPMoviePlayerController類型,它有的controlStyle屬性
可以控制播放行為,它的取值有:
MPMovieControlStyleFullscreen
MPMovieControlStyleNone沒有播放控件
MPMovieControlStyleEmbedded
MPMovieControlStyleDefault
MPMoviePlayerController類還有scalingMode屬性用於控制影片的尺寸,它的取值有:
MPMovieScalingModeNone原始尺寸
MPMovieScalingModeAspectFit縮放到一個填充方向
MPMovieScalingModeAspectFill填充兩邊可能會切除一部分
MPMovieScalingModeFill填充兩邊可能會改變比例
*/}
-(void)playingDone
{
NSLog(@"播放完成");
[moviePlayerView.view removeFromSuperview];
moviePlayerView = nil;
}
-(void)dealloc
{
//移除通知
[[NSNotificationCenter defaultCenter]removeObserver:self];
}
@end