Skip to content

播放器事件

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事件

播放器受到网络、文件格式、系统等影响,内部状态比较复杂。为了减少使用上的成本,底层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