Skip to content

专为小视频而生的AZPlayerView。支持本地url和网络url边下边播,下完缓存。网络资源目前只支持mp4。

Notifications You must be signed in to change notification settings

wodeyishuiliunian/AZPlayerView

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 

Repository files navigation

AZPlayerView

一款iOS视频播放组件(UIView中嵌入AVPlayer),支持本地url和网络url,网络资源目前只支持mp4。支持网络MP4资源缓存本地。

AZPlayer专为小视频定制,为内嵌入tableview的性能优化实现了AVPlayer的缓存机制,支持动态设置url,更方便嵌入UITableViewCell。

##Usage:

就像初始化UIView一样初始化AZPlayerView。

本地资源在初始化后直接设置URL;

网络资源需要先设置cacheUrl再设置url(顺序不能乱)。

- (instancetype)initWithFrame:(CGRect)frame delegate:(id<AZPlayerViewDelegate>) delegate;
- 设置各种需要的属性
- 设置url
- 然后add进你的superView吧!

你不必去了解底层缓存机制,组件帮你做好了一切通知的remove和add,你只需要在小视频销毁之后调用一次:

[[AZPlayerCache sharedInstance] clearCache];

##优势

  1. 整合本地资源和网络资源,提供统一的接口。
  2. 专为在tableview中内嵌入小视频做了性能优化,告别滑动卡顿:
  • AVPlayer缓存。
  • AVPlayer预加载。
  • 支持动态切换URL。
  1. 提供了视频相关的几乎一切接口,音量、播放速率、蒙层、进度、视频状态等。
  2. 提供了网络资源边下边播的解决方案。

##接口介绍: AZPlayerView提供了获取视频各种属性的接口: current, duration,progress,rate,volume,gravity等。

@property (nonatomic, readonly) AZPlayerState  state;                   //player的状态
@property (nonatomic, readonly) CGFloat        duration;                //视频总时间
@property (nonatomic, readonly) CGFloat        current;                 //当前播放时间
@property (nonatomic, readonly) CGFloat        progress;                //播放进度0~1之间
@property (nonatomic, readonly) CGSize         videoSize;               //视频尺寸

@property (nonatomic, assign) BOOL             stopInBackground;        //是否在后台播放,默认YES
@property (nonatomic, assign) CGFloat          rate;                    //播放速率 0.0相当于暂停, 1.0为原始速率
@property (nonatomic, assign) CGFloat          volume;                  //播放音量 0.0最小 1.0最大
@property (nonatomic, strong) UIImageView      *maskImageView;          //发生错误时候的遮罩层 使用:self.maskImageView.image = XXX
/**每次在设置视频的其他属性后再设置url,确保属性生效*/
@property (nonatomic, strong) NSURL            *url;                    //资源URL
@property (nonatomic, assign) AZPlayerGravity  gravity;                 //默认AZPlayerGravityResize
@property (nonatomic, getter=isMuted) BOOL     muted;                   //默认NO 加载音频,设置YES以提升性能
@property (nonatomic, assign) BOOL             autoPlayAfterReady;      //加载完成后是否自动播放,默认YES
@property (nonatomic, assign) CGFloat          startTime;               //自动播放的开始时间,默认0,从头开始播放
@property (nonatomic, assign) BOOL             autoRepeat;              //循环播放,默认NO
@property (nonatomic, assign) BOOL             cache;                   //是否使用缓存
/**网络资源*/
@property (nonatomic, strong) NSURL            *cacheUrl;               //若是获取网络资源,则必须在设置url之前设置缓存url
@property (nonatomic, readonly) CGFloat        loadedProgress;          //缓冲的进度
@property (nonatomic, readonly) BOOL           isFinishLoad;            //是否下载完毕

AZPlayerView接口提供了各种操作: 播放,暂停,任意指定时间点播放,获取任意时间点的缩略图

/**播放*/
- (void)play;

/**以下操作应在确保资源Ready后操作*/
/**
 *  暂停播放
 */
- (void)pause;

/**
 *  停止播放,等于seek到0秒然后暂停
 */
- (void)stop;

/**
 *  指定到某一事件点开始播放
 *
 *  @param seconds 时间点
 */
- (void)seekToTime:(CGFloat)seconds Pause:(BOOL) pause;

/**
 *  获取指定时间的缩略图
 */
- (UIImage *)getThumbnailAt:(CGFloat)seconds;

同时AZPlayerView的delegate也十分简洁:

typedef NS_ENUM(NSInteger, AZPlayerState) {
    AZPlayerStateUnready = 1,      //未加载
    AZPlayerStateURLLoaded,        //本地资源加载成功
    AZPlayerStateBuffering,        //网络资源网络阻塞,缓冲后会继续播放
    AZPlayerStateReady,            //准备播放
    AZPlayerStatePlaying,          //正在播放
    AZPlayerStateStopped,          //播放结束
    AZPlayerStatePause,            //暂停播放
    AZPlayerStateFinish,           //播放完成
};
/**
 *  视频资源的状态转变,各个状态的操作逻辑应在在这个函数中处理
 */
- (void)playerView:(AZPlayerView *)playerView didChangeToNewState:(AZPlayerState)state url:(NSURL *)url;
/**
 *  每隔一秒抛出视频的播放时间和播放时间百分比 TODO:网络资源暂未实现
 */
- (void)playerView:(AZPlayerView *)playerView playBackProgressChange:(CGFloat)currentTime :(CGFloat)currentProgress url:(NSURL *)url;
/**
 *  网络资源加载的进度
 */
- (void)playerView:(AZPlayerView *)playerView loadedProgressChange:(CGFloat)loadedProgress;

/**
 *  抛出错误
 */
- (void)playerView:(AZPlayerView *)playerView didFailWithError:(NSError *)error url:(NSURL *)url;

About

专为小视频而生的AZPlayerView。支持本地url和网络url边下边播,下完缓存。网络资源目前只支持mp4。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Objective-C 100.0%