美文网首页
VideoPlayer

VideoPlayer

作者: CaptainMi | 来源:发表于2018-07-11 16:24 被阅读16次

前言:视频播放是一个很常见的功能,系统自带的有三种播放器 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:[NSURLURLWithString:VideoURL]];//设置播放的URL[playerView play];//开始播放

一、开放的属性和方法

1.AVPlayer本身并不显示视频!需要一个AVPlayerLayer播放层来显示视频,然后添加到父视图的layer中。

2.AVPlayer只负责视频管理和调控,而视频资源是由AVPlayerItem提供的,每个AVPlayerItem对应一个视频地址。

2183550-682ad3bbbd93789d.png

2183550-c094634076ef398a.png

二、代理方法

/**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;

GitHub源码

相关文章

网友评论

      本文标题:VideoPlayer

      本文链接:https://www.haomeiwen.com/subject/flghpftx.html