#import #import "SuperPlayer.h" #import "SuperPlayerModel.h" #import "SuperPlayerViewConfig.h" #import "SPVideoFrameDescription.h" @class SuperPlayerControlView; @class SuperPlayerView; @class TXImageSprite; @protocol SuperPlayerDelegate @optional /// 返回事件 - (void)superPlayerBackAction:(SuperPlayerView *)player; /// 全屏改变通知 - (void)superPlayerFullScreenChanged:(SuperPlayerView *)player; /// 播放开始通知 - (void)superPlayerDidStart:(SuperPlayerView *)player; /// 播放结束通知 - (void)superPlayerDidEnd:(SuperPlayerView *)player; /// 播放错误通知 - (void)superPlayerError:(SuperPlayerView *)player errCode:(int)code errMessage:(NSString *)why; /// 播放状态发生变化 - (void)onPlayStateChange:(int) playState; /// 播放进度发生变化 - (void)onPlayProgressChange:(int) current duration:(int) duration; // 需要通知到父view的事件在此添加 @end /// 播放器的状态 typedef NS_ENUM(NSInteger, SuperPlayerState) { StateFailed = 5, // 播放失败 StateBuffering = 3, // 缓冲中 StatePlaying = 1, // 播放中 StateStopped = 4, // 停止播放 StatePause = 2, // 暂停播放 }; /// 播放器布局样式 typedef NS_ENUM(NSInteger, SuperPlayerLayoutStyle) { SuperPlayerLayoutStyleCompact, ///< 精简模式 SuperPlayerLayoutStyleFullScreen ///< 全屏模式 }; @interface SuperPlayerView : UIView /** 设置代理 */ @property (nonatomic, weak) id delegate; @property (nonatomic, assign) SuperPlayerLayoutStyle layoutStyle; /// 设置播放器的父view。播放过程中调用可实现播放窗口转移 @property (nonatomic, weak) UIView *fatherView; /// 播放器的状态 @property (nonatomic, assign) SuperPlayerState state; /// 是否全屏 @property (nonatomic, assign, setter=setFullScreen:) BOOL isFullScreen; /// 是否锁定旋转 @property (nonatomic, assign) BOOL isLockScreen; /// 是否是直播流 @property (readonly) BOOL isLive; /// 超级播放器控制层 @property (nonatomic) SuperPlayerControlView *controlView; /// 是否允许竖屏手势 @property (nonatomic) BOOL disableGesture; /// 是否在手势中 @property (readonly) BOOL isDragging; /// 是否加载成功 @property (readonly) BOOL isLoaded; /// 设置封面图片 @property (nonatomic) UIImageView *coverImageView; /// 遮罩层 @property (nonatomic, strong) UIView *maskView; /// 重播按钮 @property (nonatomic, strong) UIButton *repeatBtn; /// 全屏退出 @property (nonatomic, strong) UIButton *repeatBackBtn; /// 是否自动播放(在playWithModel前设置) @property BOOL autoPlay; /// 视频总时长 @property (nonatomic) CGFloat playDuration; /// 原始视频总时长,主要用于试看场景下显示总时长 @property (nonatomic) NSTimeInterval originalDuration; /// 视频当前播放时间 @property (nonatomic) CGFloat playCurrentTime; /// 起始播放时间,用于从上次位置开播 @property CGFloat startTime; /// 播放的视频Model @property (readonly) SuperPlayerModel *playerModel; /// 播放器配置 @property SuperPlayerViewConfig *playerConfig; /// 循环播放 @property (nonatomic) BOOL loop; /** * 视频雪碧图 */ @property TXImageSprite *imageSprite; /** * 打点信息 */ @property NSArray *keyFrameDescList; /** * 播放model */ - (void)playWithModel:(SuperPlayerModel *)playerModel; /** * 重置player */ - (void)resetPlayer; /** * 播放 */ - (void)resume; /** * 暂停 * @warn isLoaded == NO 时暂停无效 */ - (void)pause; /** * 从xx秒开始播放视频跳转 * * @param dragedSeconds 视频跳转的秒数 */ - (void)seekToTime:(NSInteger)dragedSeconds; /** * 设置播放速率 */ - (void)setPlayRate:(CGFloat)playRate; - (void)uiHideDanmu; - (void)uiHideReplay; @end