// RootViewController.m#import "RootViewController.h"#import#define PATH @"http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"@interface RootViewController (){ //创建视频播放器 MPMoviePlayerController * player;}@end@implementation RootViewController-(void)createBtn{ UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(100, 100, 100, 100); [btn setTitle:@"本地播放" forState:UIControlStateNormal]; [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; [btn addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside]; btn.tag=1; [self.view addSubview:btn]; UIButton * btn1 = [UIButton buttonWithType:UIButtonTypeCustom]; btn1.frame = CGRectMake(100, 200, 100, 100); [btn1 setTitle:@"网络播放" forState:UIControlStateNormal]; [btn1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; btn1.tag=2; [btn1 addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn1]; UIButton * btn2 = [UIButton buttonWithType:UIButtonTypeCustom]; btn2.frame = CGRectMake(100, 300, 100, 100); [btn2 setTitle:@"返回" forState:UIControlStateNormal]; [btn2 setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; btn2.tag=3; [btn2 addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn2];}-(void)pressBtn:(id)sender{// <1>找到要播放的视频的路径 NSString * path = [[NSBundle mainBundle] pathForResource:@"xiatianweidao" ofType:@"mp4"];// <2>将字符串路径转化成NSURL// NSURL * url = [NSURL fileURLWithPath:path]; UIButton *btn =(UIButton*)sender; NSURL * url=nil; if (btn.tag==2) { url = [NSURL URLWithString:PATH]; } else if (btn.tag==1){ url = [NSURL fileURLWithPath:path]; } else { [self finishPlaying:nil]; } //<3>初始化视频播放器 player = [[MPMoviePlayerController alloc]initWithContentURL:url]; //视频播放器 是一个视图控制器 上面有一个自带的视图 所以此处需要设置一些视图的大小 //<4>设置视图的大小 player.view.frame = CGRectMake(0, 100, 320, 200); //<5>将player上的视图添加在当前视图上 [self.view addSubview:player.view]; //<6>视频播放器没有协议 所有视频播放器的一些操作必须借助通知中心完成 传递的数据信息 都是一些固定的字符串 //通知是由视频播放器发送 当前的视图控制器作为通知的观察者 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(finishPlaying:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; //<7>准备播放视频 //将视频放在缓存中 这样做防止播放的时候出现卡顿的现象 [player prepareToPlay];}-(void)finishPlaying:(NSNotification *)notification{ [player.view removeFromSuperview];}- (void)viewDidLoad{ [super viewDidLoad]; [self createBtn];}