- 導(dǎo)入MediaPlayer跟AVKit框架
#import <MediaPlayer/MediaPlayer.h>
#import <AVKit/AVKit.h>
- 定義通知事件
- 創(chuàng)建通知
//檢測(cè)視頻播放完畢 --> 可以連續(xù)播放視頻
//注冊(cè)通知監(jiān)測(cè)視頻播放完畢
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackDidFinishNotification:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
- 通知綁定
#pragma mark 通知綁定的方法
- (void)moviePlayerPlaybackDidFinishNotification:(NSNotification *)notification
{
/**
MPMovieFinishReasonPlaybackEnded, 播放結(jié)束
MPMovieFinishReasonPlaybackError, 播放錯(cuò)誤
MPMovieFinishReasonUserExited 退出播放
*/
//1. 獲取通知結(jié)束的狀態(tài)
NSInteger movieFinishKey = [notification.userInfo[MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue];
//2. 根據(jù)狀態(tài)不同來自行填寫邏輯代碼
switch (movieFinishKey) {
case MPMovieFinishReasonPlaybackEnded:
NSLog(@"播放結(jié)束");
// 進(jìn)行視頻切換 需要兩步
//1. 要想換視頻, 就需要更換地址
self.mpC.contentURL = [[NSBundle mainBundle] URLForResource:@"Alizee_La_Isla_Bonita.mp4" withExtension:nil];
//
[self.mpC play];
break;
case MPMovieFinishReasonPlaybackError:
NSLog(@"播放錯(cuò)誤");
break;
case MPMovieFinishReasonUserExited:
NSLog(@"退出播放");
// 如果是不帶view的播放器, 那么播放完畢(退出/錯(cuò)誤/結(jié)束)都應(yīng)該退出
[self.mpC.view removeFromSuperview];
break;
default:
break;
}
}
- 移除通知
- (void)dealloc
{
//移除通知
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
3.1 不帶View的播放器的控制器
// 不帶View的播放器的控制器 --> 需要強(qiáng)引用, 設(shè)置frame, 添加到view上, 開始播放
//1. 獲取URL地址
NSURL *url = [[NSBundle mainBundle] URLForResource:@"Cupid_高清.mp4" withExtension:nil];
//2. 創(chuàng)建不帶View的播放器
self.mpC = [[MPMoviePlayerController alloc] initWithContentURL:url];
//3. 設(shè)置view.frame
self.mpC.view.frame = CGRectMake(0, 0, 300, 400);
//4. 添加到view上
[self.view addSubview:self.mpC.view];
//5. 準(zhǔn)備播放 --> 規(guī)范寫法, 要寫上. 調(diào)用play方法時(shí), 會(huì)自動(dòng)調(diào)用此方法
[self.mpC prepareToPlay];
//6. 開始播放
[self.mpC play];
//7. 控制模式
self.mpC.controlStyle = MPMovieControlStyleFullscreen;
/**
MPMovieControlStyleNone, // No controls
MPMovieControlStyleEmbedded, // 嵌入式的控制 -- 默認(rèn)
MPMovieControlStyleFullscreen, // 全屏?xí)r的控制樣式
*/
3.2 帶View的播放器控制器
// 帶View的播放器的控制器
//1. 獲取URL地址
NSURL *url = [[NSBundle mainBundle] URLForResource:@"Cupid_高清.mp4" withExtension:nil];
//2. 創(chuàng)建帶View的播放器
MPMoviePlayerViewController *mpVC = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
//3. 模態(tài)視圖彈出 --> 模態(tài)視圖的切換應(yīng)該在View完全展示之后進(jìn)行
[self presentViewController:mpVC animated:YES completion:nil];