UI(三十八)視頻播放

視頻

?1、介紹

?(0)ios9之后的改變 棄用了:MPMoviePlayerViewController(框架:MediaPlayer)

?新加入了:AVPlayerViewController(框架:AVFoundation #import )

?(1)AVPlayer?用來播放音視頻 可以單獨使用(必須與AVPlayerLayer配合使用)也可以直接使用AVPlayerViewControl

?(2)AVPlayerItem?音視頻里面播放的對象

?(3)AVPlayerLayer?播放顯示視頻的圖層界面(圖層比起view不能添加響應事件)

?(4)AVPlayerViewController?視圖控制器 可以顯示視頻,并且調節(jié)控件

?2、使用

?(1)AVPlayer直接播放:?AVPlayer(視頻播放器)去播放->AVPlayerItem(視頻播放的元素)->AVPlayerLayer(展示播放的視圖)

?步驟:

?《1》創(chuàng)建AVPlayerItem?視頻內容相關


?? <1>playerItemWithURL:類方法 通過URL地址創(chuàng)建要播放的對象(可以是本地、也可以在線)

?? <2>initWithURL:構造方法

?? <3>playerItemWithAsset:通過設備相冊里面的內容 創(chuàng)建一個 要播放的對象

?? <4>playerItemWithAsset:automaticallyLoadedAssetKeys自動根據要求的Key去加載相冊里面的內容

?? <5>initWithAsset: automaticallyLoadedAssetKeys:構造方法

?? <6>duration?總時長

?? <7>status?加載狀態(tài)

?①、AVPlayerItemStatusUnknown?未知狀態(tài)

②、AVPlayerItemStatusReadyToPlay?準備播放狀態(tài)

③、AVPlayerItemStatusFailed?失敗狀態(tài)

?? <8>時間控制的類目

?①、currentTime?獲得當前播放時間

?②、forwardPlaybackEndTime?跳到結束位置

?③、reversePlaybackEndTime?跳到開始位置

?④、seekToTime:?跳到指定位置

?? <9>

?《2》創(chuàng)建AVPlayer?視頻操作相關

?? <1>playerWithURL:根據URL去創(chuàng)建播放器 不需使用item

?? <2>initWithURL:

?? <3>playerWithPlayerItem:需要傳入一個視頻播放內容

?? <4>initWithPlayerItem:

?? <5>play播放

?? <6>pause暫停

?? <7>seekToTime跳轉到某一個進度(拖動快進、回退)

?? <8>currentItem當前播放的視頻元素

?? <9>volume?調節(jié)音量

?? <10>externalPlaybackVideoGravity?視頻顯示的播放樣式

?①、AVLayerVideoGravityResizeAspect?普通的

?②、AVLayerVideoGravityResizeAspectFill?充滿的

?? <11>currentTime?當前播放時間(CMTime類型) CMTimeGetSeconds()通過CMTime獲得當前播放時間 單位是秒

?《3》創(chuàng)建AVPlayerLayer?添加到父視圖

?? <1>playerLayerWithPlayer:->類方法 根據播放器去創(chuàng)建一個可以顯示視頻的圖層

?? <2>設置位置?frame沒有動畫

?? <3>視頻圖層添加到父圖層:[self.view.layer addSublayer:layer];

?《4》播放?**播放器:[player play];

?? <1>獲得播放結束的狀態(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:?跳轉到某一個進度

?(2)控制器播放?#import

?《1》AVPlayer

?《2》AVPlayerViewController?創(chuàng)建視頻播放視圖的控制器

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容