-
Notifications
You must be signed in to change notification settings - Fork 224
播放器事件
fengxing edited this page Jan 17, 2019
·
6 revisions
SuperPlayer通过Delegate通知调用方常见播放事件
@protocol SuperPlayerDelegate <NSObject>
@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;
// 需要通知到父view的事件在此添加
@end
播放器受到网络、文件格式、系统等影响,内部状态比较复杂。为了减少使用上的成本,底层SDK采用事件回调的方式通知上层。
SuperPlayer处理了部分事件,其它事件可以以下方法中添加。
// 点播
-(void) onPlayEvent:(TXVodPlayer *)player event:(int)EvtID withParam:(NSDictionary*)param;
采用事件方式通知,带来的问题是事件会非常多,很容易搞晕。幸好大部分事件一般情况不必关心,SDK内部已做处理。 以点播为例,只需要理解其3种播放状态即可应付大部分情况。
注:EVT_MSG每个事件都有
事件ID | 数值 | 说明 | param |
---|---|---|---|
PLAY_EVT_RCV_FIRST_I_FRAME | 2003 | 视频画面开始显示 | |
PLAY_EVT_PLAY_BEGIN | 2004 | 播放开始,播放过程中会收到多次。暂停后恢复播放也会收到此消息 | |
PLAY_EVT_PLAY_PROGRESS | 2005 | 视频播放进度。通过progressInterval可调节此事件频率 | EVT_PLAY_PROGRESS: 播放位置;EVT_PLAY_DURATION: 总时长;EVT_PLAYABLE_DURATION: 可播放时长 |
PLAY_EVT_PLAY_END | 2006 | 视频播放结束 | |
PLAY_EVT_PLAY_LOADING | 2007 | 视频缓冲 | |
PLAY_EVT_START_VIDEO_DECODER | 2008 | 解码器启动 | EVT_PARAM1: 1= 硬解;2=软解;hevc: 1=265 |
PLAY_EVT_CHANGE_RESOLUTION | 2009 | 视频分辨率改变 | EVT_PARAM1: 视频宽;EVT_PARAM2: 视频高 |
PLAY_EVT_GET_PLAYINFO_SUCC | 2010 | 获取点播文件信息成功,startPlayWithParams才会收到 | EVT_PLAY_COVER_URL: 封面url;EVT_PLAY_URL: 播放地址;EVT_PLAY_NAME: 视频名; |
PLAY_EVT_CHANGE_ROTATION | 2011 | MP4视频旋转角度 | EVT_PARAM1: 视频角度 |
PLAY_EVT_VOD_PLAY_PREPARED | 2013 | 视频加载完毕。收到此事件后,若不做特别说明,播放器的的其它接口此时调用才会生效 | |
PLAY_EVT_VOD_LOADING_END | 2014 | 缓冲结束,和PLAY_EVT_PLAY_LOADING对应 | |
PLAY_ERR_NET_DISCONNECT | -2301 | 网络断连,且经多次重连抢救无效 | |
PLAY_ERR_FILE_NOT_FOUND | -2303 | 播放本地不存在的文件 | |
PLAY_ERR_HEVC_DECODE_FAIL | -2304 | H265解码失败 | |
PLAY_ERR_HLS_KEY | -2305 | 播放加密HLS,解密失败 | |
PLAY_ERR_GET_PLAYINFO_FAIL | -2306 | 获取点播文件信息失败,startPlayWithParams才会收到。一般为网络问题,或fileId参数错误 | EVT_PARAM1: 服务器返回错误码 |
PLAY_WARNING_VIDEO_DECODE_FAIL | 2101 | 当前视频帧解码失败。不影响正常播放 | |
PLAY_WARNING_AUDIO_DECODE_FAIL | 2102 | 当前音频帧解码失败。不影响正常播放 | |
PLAY_WARNING_RECONNECT | 2103 | 网络断连, 已启动自动重连 |
事件ID | 数值 | 说明 | param |
---|---|---|---|
PLAY_EVT_CONNECT_SUCC | 2001 | 已经连接服务器 | |
PLAY_EVT_RTMP_STREAM_BEGIN | 2002 | 已经连接服务器,开始拉流(仅播放RTMP地址时会抛送) | |
PLAY_EVT_RCV_FIRST_I_FRAME | 2003 | 网络接收到首个可渲染的视频数据包(IDR) | |
PLAY_EVT_PLAY_BEGIN | 2004 | 视频播放开始,如果有转菊花什么的这个时候该停了 | |
PLAY_EVT_PLAY_LOADING | 2007 | 视频播放loading,如果能够恢复,之后会有BEGIN事件 | |
PLAY_EVT_GET_MESSAGE | 2012 | 用于接收夹在音视频流中的消息,详情参考消息接受 | |
PLAY_EVT_PLAY_END | 2006 | 视频播放结束 | |
PLAY_ERR_NET_DISCONNECT | -2301 | 网络断连,且经多次重连亦不能恢复,更多重试请自行重启播放 | |
PLAY_WARNING_VIDEO_DECODE_FAIL | 2101 | 当前视频帧解码失败 | |
PLAY_WARNING_AUDIO_DECODE_FAIL | 2102 | 当前音频帧解码失败 | |
PLAY_WARNING_RECONNECT | 2103 | 网络断连, 已启动自动重连 | |
PLAY_WARNING_RECV_DATA_LAG | 2104 | 网络来包不稳:可能是下行带宽不足,或由于主播端出流不均匀 | |
PLAY_WARNING_VIDEO_PLAY_LAG | 2105 | 当前视频播放出现卡顿 | |
PLAY_WARNING_HW_ACCELERATION_FAIL | 2106 | 硬解启动失败,采用软解 | |
PLAY_WARNING_VIDEO_DISCONTINUITY | 2107 | 当前视频帧不连续,可能丢帧 | |
PLAY_WARNING_DNS_FAIL | 3001 | RTMP-DNS解析失败(仅播放RTMP地址时会抛送) | |
PLAY_WARNING_SEVER_CONN_FAIL | 3002 | RTMP服务器连接失败(仅播放RTMP地址时会抛送) | |
PLAY_WARNING_SHAKE_FAIL | 3003 | RTMP服务器握手失败(仅播放RTMP地址时会抛送) | |
PLAY_EVT_START_VIDEO_DECODER | 2008 | 解码器启动 | EVT_PARAM1: 1= 硬解;2=软解;hevc: 1=265 |