視頻
?1蒂教、介紹
?(0)ios9之后的改變 棄用了:MPMoviePlayerViewController(框架:MediaPlayer)
?新加入了:AVPlayerViewController(框架:AVFoundation #import )
?(1)AVPlayer?用來播放音視頻 可以單獨使用(必須與AVPlayerLayer配合使用)也可以直接使用AVPlayerViewControl
?(2)AVPlayerItem?音視頻里面播放的對象
?(3)AVPlayerLayer?播放顯示視頻的圖層界面(圖層比起view不能添加響應(yīng)事件)
?(4)AVPlayerViewController?視圖控制器 可以顯示視頻,并且調(diào)節(jié)控件
?2、使用
?(1)AVPlayer直接播放:?AVPlayer(視頻播放器)去播放->AVPlayerItem(視頻播放的元素)->AVPlayerLayer(展示播放的視圖)
?步驟:
?《1》創(chuàng)建AVPlayerItem?視頻內(nèi)容相關(guān)
?? <1>playerItemWithURL:類方法 通過URL地址創(chuàng)建要播放的對象(可以是本地、也可以在線)
?? <2>initWithURL:構(gòu)造方法
?? <3>playerItemWithAsset:通過設(shè)備相冊里面的內(nèi)容 創(chuàng)建一個 要播放的對象
?? <4>playerItemWithAsset:automaticallyLoadedAssetKeys自動根據(jù)要求的Key去加載相冊里面的內(nèi)容
?? <5>initWithAsset: automaticallyLoadedAssetKeys:構(gòu)造方法
?? <6>duration?總時長
?? <7>status?加載狀態(tài)
?①、AVPlayerItemStatusUnknown?未知狀態(tài)
②号阿、AVPlayerItemStatusReadyToPlay?準(zhǔn)備播放狀態(tài)
③、AVPlayerItemStatusFailed?失敗狀態(tài)
?? <8>時間控制的類目
?①鸳粉、currentTime?獲得當(dāng)前播放時間
?②扔涧、forwardPlaybackEndTime?跳到結(jié)束位置
?③、reversePlaybackEndTime?跳到開始位置
?④届谈、seekToTime:?跳到指定位置
?? <9>
?《2》創(chuàng)建AVPlayer?視頻操作相關(guān)
?? <1>playerWithURL:根據(jù)URL去創(chuàng)建播放器 不需使用item
?? <2>initWithURL:
?? <3>playerWithPlayerItem:需要傳入一個視頻播放內(nèi)容
?? <4>initWithPlayerItem:
?? <5>play播放
?? <6>pause暫停
?? <7>seekToTime跳轉(zhuǎn)到某一個進度(拖動快進枯夜、回退)
?? <8>currentItem當(dāng)前播放的視頻元素
?? <9>volume?調(diào)節(jié)音量
?? <10>externalPlaybackVideoGravity?視頻顯示的播放樣式
?①、AVLayerVideoGravityResizeAspect?普通的
?②艰山、AVLayerVideoGravityResizeAspectFill?充滿的
?? <11>currentTime?當(dāng)前播放時間(CMTime類型) CMTimeGetSeconds()通過CMTime獲得當(dāng)前播放時間 單位是秒
?《3》創(chuàng)建AVPlayerLayer?添加到父視圖
?? <1>playerLayerWithPlayer:->類方法 根據(jù)播放器去創(chuàng)建一個可以顯示視頻的圖層
?? <2>設(shè)置位置?frame沒有動畫
?? <3>視頻圖層添加到父圖層:[self.view.layer addSublayer:layer];
?《4》播放?**播放器:[player play];
?? <1>獲得播放結(jié)束的狀態(tài)獲得總時長?->?通過發(fā)送通知的形式獲得?-> AVPlayerItemDidPlayToEndTimeNotification
? [[NSNotificationCenter defaultCenter]addObserver:selfselector:@selector(itemDidPlayToEndTimeNotification:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
?? <2>CMTime ->?視頻播放進度?value? timescale
? ? CMTimeMake(<#int64_t value#>, <#int32_t timescale#>)
?? <3>kCMTimeZero?初始進度
?? <4>seekToTime:?跳轉(zhuǎn)到某一個進度
?(2)控制器播放?#import
?《1》AVPlayer
?《2》AVPlayerViewController?創(chuàng)建視頻播放視圖的控制器