視頻播放

一烦味、AVPlayer

能播放本地聂使、遠(yuǎn)程的音頻壁拉、視頻文件;基于Layer顯示柏靶,得自己去編寫控制面板弃理。

  1. 本地視頻:
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()
@property (nonatomic, strong) AVPlayer *player;
@end

@implementation ViewController
- (void)viewDidLoad {

    [super viewDidLoad];

    // 初始化
    NSURL*url = [[NSBundlemainBundle] URLForResource:@"promo_full.mp4"withExtension:nil];

    self.player = [AVPlayer playerWithURL:url];

    // 設(shè)置播放圖層
    AVPlayerLayer *playerLayer = [AVPlayerLayer  playerLayerWithPlayer:self.player];
playerLayer.frame = self.view.bounds;
    [self.view.layer addSublayer:playerLayer];
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // 開始播放
    [self.player play];
}
@end

2.在線視頻:

#import <AVFoundation/AVFoundation.h>
@interface ViewController ()
@property (nonatomic, strong) AVPlayer *player;
@end

@implementation ViewController
- (void)viewDidLoad {

    [super viewDidLoad];

    // 初始化
    NSURL*url = [NSURLURLWithString:@"http://streams.videolan.org/streams/mp4/Mr_MrsSmith-h264_aac.mp4"];

    self.player = [AVPlayer playerWithURL:url];

     // 設(shè)置播放圖層
   AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
playerLayer.frame = self.view.bounds;
    [self.view.layer addSublayer:playerLayer];
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // 開始播放
   [self.player play];
}
@end

注意:
播放視頻時(shí)需要設(shè)置播放視頻圖層。

二屎蜓、MPMoviePlayerController

  1. 能播放本地蚁廓、遠(yuǎn)程的音頻凸郑、視頻文件,YouTobe就是用MPMoviePlayerController實(shí)現(xiàn)的

  2. 它繼承自NSObject,自帶播放控制面板(暫停、播放徽鼎、播放進(jìn)度、是否要全屏)

  3. MPMoviePlayerController可以播放的視頻格式包括:H.264往枷、MPEG-4等蝌矛;支持的文件擴(kuò)展名包括:avi,mkv,mov,m4v,mp4等

  4. 此類定義在了MediaPlayer框架

  5. 加載視頻資源(注意,如果url為nil同樣可以加載)
    NSAssert(self.url, @"URL不能為空");
    [[MPMoviePlayerController alloc] initWithContentURL:self.url];

  6. 顯示 :[self.view addSubview:self.moviePlayer.view];
    通過設(shè)置AutoresizingMask屬性可以在橫豎屏轉(zhuǎn)換時(shí)自動調(diào)整視圖大小

  7. 播放:[self.moviePlayer play];

  8. 全屏 :[self.moviePlayer setFullscreen:YES animated:YES];

  9. MPMoviePlayerController的播放狀態(tài)是通過通知中心監(jiān)聽的荐吵,常用監(jiān)聽通知事件

  • 狀態(tài)變化
    MPMoviePlayerPlaybackStateDidChangeNotification

  • 播放結(jié)束
    MPMoviePlayerPlaybackDidFinishNotification

  • 退出全屏
    MPMoviePlayerDidExitFullscreenNotification

  • 截屏完成
    MPMoviePlayerThumbnailImageRequestDidFinishNotification

  • 截屏方法
    -requestThumbnailImagesAtTimes:timeOption:

  1. 代碼實(shí)現(xiàn)

#import <MediaPlayer/MediaPlayer.h>
@interface ViewController ()
/**
 *  視頻播放器
 */
@property (nonatomic, strong) MPMoviePlayerController *moviePlayer;
@end

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 創(chuàng)建視頻播放器
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"promo_full.mp4" withExtension:nil];
    // NSURL *url = [NSURL URLWithString:@"http://streams.videolan.org/streams/mp4/Mr_MrsSmith-h264_aac.mp4"];
    self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
    
    // 設(shè)置播放顯示視圖
    self.moviePlayer.view.frame = self.view.bounds;
    [self.view addSubview:self.moviePlayer.view];
    
    // 使用autoLayout適配橫豎屏
    // 1.禁用translatesAutoresizingMaskIntoConstraints
    self.moviePlayer.view.translatesAutoresizingMaskIntoConstraints = NO;
    
    // 2.設(shè)置約束
    NSArray *constraintH = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[moviePlayerView]-0-|" options:0 metrics:nil views:@{@"moviePlayerView" :self.moviePlayer.view}];
    NSArray *constraintV = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[moviePlayerView]-0-|" options:0 metrics:nil views:@{@"moviePlayerView" :self.moviePlayer.view}];
    [self.view addConstraints:constraintH];
    [self.view addConstraints:constraintV];
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
   // 兩種方式都是直接播放
    // 播放視頻
    [self.moviePlayer play];
  
    // 準(zhǔn)備后直接播放
    // [self.moviePlayer prepareToPlay];
}
@end

三骑冗、MPMoviePlayerViewController

  1. 能播放本地、遠(yuǎn)程的音頻先煎、視頻文件
  2. 內(nèi)部是封裝了MPMoviePlayerController
  3. 播放界面默認(rèn)就是全屏的
  4. 如果播放功能比較簡單贼涩,僅僅是簡單地播放遠(yuǎn)程、本地的視頻文件榨婆,建議用這個
  5. 此類定義在了MediaPlayer框架
  6. 代碼實(shí)現(xiàn)
#import <MediaPlayer/MediaPlayer.h>
@interface ViewController ()
@end

@implementation ViewController
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // 創(chuàng)建播放控制器
    NSURL*url = [NSURLURLWithString:@"http://streams.videolan.org/streams/mp4/Mr_MrsSmith-h264_aac.mp4"];

    MPMoviePlayerViewController*moviePlayerVc = [[MPMoviePlayerViewControlleralloc] initWithContentURL:url];

    // 播放視頻
    [self  presentMoviePlayerViewControllerAnimated:moviePlayerVc  ];
}
@end

注意:
使用MPMoviePlayerViewController時(shí)創(chuàng)建的視頻播放控制器不需要強(qiáng)引用磁携。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市良风,隨后出現(xiàn)的幾起案子谊迄,更是在濱河造成了極大的恐慌,老刑警劉巖烟央,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件统诺,死亡現(xiàn)場離奇詭異,居然都是意外死亡疑俭,警方通過查閱死者的電腦和手機(jī)粮呢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钞艇,“玉大人啄寡,你說我怎么就攤上這事×ㄕ眨” “怎么了挺物?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長飘弧。 經(jīng)常有香客問我识藤,道長砚著,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任痴昧,我火速辦了婚禮稽穆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赶撰。我一直安慰自己舌镶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布扣囊。 她就那樣靜靜地躺著乎折,像睡著了一般。 火紅的嫁衣襯著肌膚如雪侵歇。 梳的紋絲不亂的頭發(fā)上骂澄,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音惕虑,去河邊找鬼坟冲。 笑死,一個胖子當(dāng)著我的面吹牛溃蔫,可吹牛的內(nèi)容都是我干的健提。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼伟叛,長吁一口氣:“原來是場噩夢啊……” “哼私痹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起统刮,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤紊遵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后侥蒙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體暗膜,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年鞭衩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了学搜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡论衍,死狀恐怖瑞佩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坯台,我是刑警寧澤炬丸,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站捂人,受9級特大地震影響御雕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜滥搭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一酸纲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瑟匆,春花似錦闽坡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冕象,卻和暖如春代承,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渐扮。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工论悴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人墓律。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓膀估,卻偏偏與公主長得像,于是被迫代替她去往敵國和親耻讽。 傳聞我的和親對象是個殘疾皇子察纯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容