視頻播放

1.介紹

播放視頻文件。

2.iOS9.0以前使用

2.1框架

#import <MediaPlayer/MediaPlayer.h>
控制器類 :MPMoviePlayerViewController
播放視圖類:MPMoviePlayerController

2.1 MPMoviePlayerViewController 視頻彈出控制器方式

//第一種彈出控制器方式
- (void)loadMovie{
    //1.創(chuàng)建URL
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"video1.mp4" withExtension:nil];
    //2.創(chuàng)建視頻播放控制器
    MPMoviePlayerViewController *vc = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
    //3.彈出視頻播放控制器
    [self presentMoviePlayerViewControllerAnimated:vc];
    //4.視頻播放器代碼退出 -- 在視頻播放完之后退出
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(4.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        //讓窗口消失
        [self dismissMoviePlayerViewControllerAnimated];
    });
}
//第二種彈出控制器方式
- (void)loadMovie{
    //1.創(chuàng)建URL
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"video1.mp4" withExtension:nil];
    //2.創(chuàng)建視頻播放控制器
    MPMoviePlayerViewController *vc = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
    //3.彈出視頻播放控制器
    [self presentViewController:vc animated:YES completion:nil];
    //4.視頻播放器代碼退出 -- 在視頻播放完之后退出
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(4.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        //讓窗口消失
        [self dismissViewControllerAnimated:YES completion:nil];
    });
}

3.2 MPMoviePlayerController 在某個View中播放

- (void)loadMovie{
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"video4.mp4" withExtension:nil];
    self.mpc = [[MPMoviePlayerController alloc] initWithContentURL:url];
    // 注意: 需要配置frame值, 否則有可能看不到
    self.mpc.view.frame = self.tempView.bounds;
    //將播放視頻View添加當前的某個View上
    [self.tempView addSubview:self.mpc.view];
    // 播放視頻
    [self.mpc play];
}

設置MPMoviePlayerController顯示的一些屬性

- (void)loadMovie{
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"video4.mp4" withExtension:nil];
    self.mpc = [[MPMoviePlayerController alloc] initWithContentURL:url];
    // 注意: 需要配置frame值, 否則有可能看不到
    self.mpc.view.frame = self.tempView.bounds;
    [self.tempView addSubview:self.mpc.view];
    //控制欄樣式
    /**
     MPMovieControlStyleNone,       沒有控制界面
     MPMovieControlStyleEmbedded,   嵌入的控制界面
     MPMovieControlStyleFullscreen,     全屏的控制界面
     */
    self.mpc.controlStyle = MPMovieControlStyleEmbedded;    // 默認
    //視頻拉伸模式
    /**
     MPMovieScalingModeNone,       沒有拉伸
     MPMovieScalingModeAspectFit,  保持比例拉伸
     MPMovieScalingModeAspectFill,   保持比例填充
     MPMovieScalingModeFill         拉伸填充
     */
    self.mpc.scalingMode = MPMovieScalingModeAspectFit; // 默認
    // 視頻準備并且播放
    [self.mpc prepareToPlay];
    // 視頻播放
    // [self.mpc play];
    // 視頻暫停
    // [self.mpc pause];
    // 視頻停止
    // [self.mpc stop];
}

2.3視頻播放完成的通知

// 監(jiān)聽播放完成的通知
- (void)registerNotification{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishAction:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
}
- (void)didFinishAction:(NSNotification *)notification{
    NSLog(@"播放完成, %@", notification);
    MPMovieFinishReason reason = [notification.userInfo[MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue];
    /**
     MPMovieFinishReasonPlaybackEnded, 播放結束
     MPMovieFinishReasonPlaybackError, 播放完成
     MPMovieFinishReasonUserExited 播放退出
     */
    if (reason == MPMovieFinishReasonPlaybackEnded) {
        //播放結束
    }
}
// 移除通知
- (void)dealloc{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:
     MPMoviePlayerPlaybackDidFinishNotification object:nil];
}

3.iOS9.0以后

3.1在View中播放

3.1.1框架

#import <AVFoundation/AVFoundation.h>
類: AVPlayer

3.1.2使用流程

- (void)avplayerLayerTest
{
    //1.獲得視頻的URL
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"video2.mp4" withExtension:nil];
    //2.創(chuàng)建播放器
    AVPlayer *player = [[AVPlayer alloc] initWithURL:url];
    //3.創(chuàng)建播放顯示Layer
    self.layer = [AVPlayerLayer playerLayerWithPlayer:player];
    //4.將播放Layer添加到View中
    [self.tempView.layer addSublayer:self.layer];
    //5.設置顯示layer的frame
    self.layer.frame = self.tempView.bounds;
    //6.視頻的拉伸樣式
    /**
     AVLayerVideoGravityResize, more
     AVLayerVideoGravityResizeAspect 保持比例
     AVLayerVideoGravityResizeAspectFill 拉伸樣式
     */
    self.layer.videoGravity = AVLayerVideoGravityResizeAspectFill;
    //7.視頻播放
    [self.layer.player play];
}

3.1.3視頻播放其它

- (void)vedioPauseOrPlay{
    //rate 播放比率
    if (self.layer.player.rate == 0.0) {
        // 沒有播放
        [self.layer.player play];
    } else if(self.layer.player.rate == 1.0) {
        // 正常播放
        [self.layer.player pause];
    }
}

3.2控制器播放

3.2.1框架

#import <AVKit/AVKit.h>
類: AVPlayerViewController

3.2.2使用流程

- (void)videoController{
    //1.創(chuàng)建控制器
    AVPlayerViewController *pvc = [[AVPlayerViewController alloc] init];
    //2.獲得視頻的URL
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"video2.mp4" withExtension:nil];
    //3.創(chuàng)建播放類
    AVPlayer *player = [[AVPlayer alloc] initWithURL:url];
    //4.對播放控制器賦值
    pvc.player = player;
    //5.彈出控制器
    [self presentViewController:pvc animated:YES completion:nil];
    //6.開始播放  注意:player必須手動調用, 才會播放視頻
    [pvc.player play];
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末抖韩,一起剝皮案震驚了整個濱河市在旱,隨后出現(xiàn)的幾起案子撩扒,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拆魏,死亡現(xiàn)場離奇詭異,居然都是意外死亡慈俯,警方通過查閱死者的電腦和手機渤刃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贴膘,“玉大人卖子,你說我怎么就攤上這事⌒滔浚” “怎么了洋闽?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵璃哟,是天一觀的道長。 經(jīng)常有香客問我喊递,道長随闪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任骚勘,我火速辦了婚禮铐伴,結果婚禮上,老公的妹妹穿的比我還像新娘俏讹。我一直安慰自己当宴,他們只是感情好,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布泽疆。 她就那樣靜靜地躺著户矢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪殉疼。 梳的紋絲不亂的頭發(fā)上梯浪,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音瓢娜,去河邊找鬼挂洛。 笑死,一個胖子當著我的面吹牛眠砾,可吹牛的內容都是我干的虏劲。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼褒颈,長吁一口氣:“原來是場噩夢啊……” “哼柒巫!你這毒婦竟也來了?” 一聲冷哼從身側響起谷丸,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤堡掏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后淤井,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體布疼,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年币狠,在試婚紗的時候發(fā)現(xiàn)自己被綠了游两。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡漩绵,死狀恐怖贱案,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤宝踪,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布侨糟,位于F島的核電站,受9級特大地震影響瘩燥,放射性物質發(fā)生泄漏秕重。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一厉膀、第九天 我趴在偏房一處隱蔽的房頂上張望溶耘。 院中可真熱鬧,春花似錦服鹅、人聲如沸凳兵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庐扫。三九已至,卻和暖如春仗哨,著一層夾襖步出監(jiān)牢的瞬間形庭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工藻治, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留碘勉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓桩卵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親倍宾。 傳聞我的和親對象是個殘疾皇子雏节,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內容