前言:視訊播放是一個很常見的功能,系統自帶的有三種播放器 MPMoviePlayerController、AVPlayerViewController、AVPlayer。但是MPMoviePlayerController 在iOS9以後被棄用,AVPlayerViewController 只能用於iOS8以後,所以使用AVFoundation框架中的AVPlayer來自定義視訊播放器是很多專案的選擇。我封裝的LYAVPlayer只需幾行程式碼就可以實現視訊播放的功能:
LYAVPlayerView *playerView =[LYAVPlayerView alloc]init];
playerView.frame =CGRectMake(0, 64, ScreenWidth,200);
playerView.delegate =self;//設定代理
[self.view addSubview:playerView];
[playerView setURL:[NSURL URLWithString:VideoURL]];//設定播放的URL
[playerView play];//開始播放
複製程式碼
一、開放的屬性和方法 1.AVPlayer本身並不顯示視訊!需要一個AVPlayerLayer播放層來顯示視訊,然後新增到父檢視的layer中。 2.AVPlayer只負責視訊管理和調控,而視訊資源是由AVPlayerItem提供的,每個AVPlayerItem對應一個視訊地址。
二、代理方法
/**AVPlayerItem的三種狀態
*AVPlayerItemStatusUnknown,
*AVPlayerItemStatusReadyToPlay,
*AVPlayerItemStatusFailed
*/
//所有的代理方法均已回到主執行緒 可直接重新整理UI
// 可播放/播放中
- (void)videoPlayerIsReadyToPlayVideo:(LYAVPlayerView *)playerView;
//播放完畢
- (void)videoPlayerDidReachEnd:(LYAVPlayerView *)playerView;
//當前播放時間
- (void)videoPlayer:(LYAVPlayerView *)playerView timeDidChange:(CGFloat )time;
//duration 當前緩衝的長度
- (void)videoPlayer:(LYAVPlayerView *)playerView loadedTimeRangeDidChange:(CGFloat )duration;
//進行跳轉後沒資料 即播放卡頓
- (void)videoPlayerPlaybackBufferEmpty:(LYAVPlayerView *)playerView;
// 進行跳轉後有資料 能夠繼續播放
- (void)videoPlayerPlaybackLikelyToKeepUp:(LYAVPlayerView *)playerView;
//載入失敗
- (void)videoPlayer:(LYAVPlayerView *)playerView didFailWithError:(NSError *)error;
複製程式碼