关于如何接入SDK回放功能

本文主要介绍如何接入SDK回放功能,包括两大部分,核心功能和其他功能

1. 回放核心功能

1.1 回放登录

1.1.1 主动调用api

回放登录需要主动调用方法在DWLiveReplay.java(DWLiveReplay为单例)中,如下

方法说明
getInstance()获取DWLiveReplay单例
setLoginParams(DWLiveLoginListener dwLiveLoginListener, LoginInfo loginInfo)(过时) 设置回放登录参数
startLogin()(过时) 开始登录
startLogin(ReplayLoginInfo, final DWLiveReplayLoginListener)(>=3.14.0)设置登录参数并开始登录

登录所需参数ReplayLoginInfo如下

1.1.2 回调事件api

DWLiveReplayLoginListener

方法说明
onException(DWLiveException exception)登录失败
onLogin(TemplateInfo templateInfo)登录成功
onLogin(TemplateInfo templateInfo, Marquee marquee)登录成功 附带跑马灯信息Marquee(重写方法)
onLogin(TemplateInfo templateInfo, Viewer viewer)登录成功 附个人信息Viewer(重写方法)

返回信息同直播相同,登录成功可监听onLogin任意一个互调

onLogin(TemplateInfo templateInfo, Marquee marquee)为定制方法,如需使用到界面跑马灯可单独实现该回调

1.2 回放播放视频和文档

1.2.1 主动调用api

回放核心类代码在DWLiveReplay.java(DWLiveReplay为单例)如下

方法说明
setReplayParams(DWLiveReplayListener replayListener, Context context)设置回调和上下文
setReplayPlayer(DWReplayPlayer player)设置播放器
setReplayDocView(DocView docView)设置文档
start()开始播放
stop()停止播放
pause()暂停播放
resume()恢复播放
setLastPosition(long position)设置开始播放位置,需在start之前调用
retryReplay(long position, boolean updateStream)重试播放
positon:播放位置updateStream更换流地址
onDestroy()释放资源
setSpeed(float speed)设置播放速率
changeLineWithPlayParameter(ReplayLineConfig ,ReplayLineSwitchListener)(过时) 切换线路
changeLineWithNum(int line, ReplayLineSwitchListener changeLineCallback)(过时) 切换线路
changeLine(int lineIndex, ReplayChangeSourceListener changeCallBack)(>=3.13.0)切换线路
changeQuality(int quality, ReplayChangeSourceListener)(>=3.13.0)切换清晰度
changePlayMode(PlayMode, ReplayChangeSourceListener )(>=3.13.0)切换音视频播放模式
setDocScaleType(DocView.ScaleType type)设置文档缩放类型
changeDocBackgroundColor(String color)更改文档背景颜色
reloadPageChange()(>=3.17.9)刷新翻页,当文档回调DOC_DP_IMAGE_ERROR(4)错误时,可以调用此方法重试当前翻页。调用间隔需大于3s。
reloadPageData()(>=3.17.9)刷新数据获取,当回放回调onPageDataError(3.17.9新增)时,可以调用此方法进行基础元数据重试。调用间隔需大于3s。

播放器核心代码在DWReplayPlayer.java中,调用方法如下

方法说明
DWReplayPlayer(Context context)构造方法
updateSurface(Surface surface)更新Surface
start()开始播放
pause()暂停播放
stop()停止播放
reset()重置播放器
release()停止并释放资源,替代stop方法
destroy()完全释放
seekTo(long progress)拖动进度
setSpeed(float speed)设置播放速率
setOnPreparedListener(OnPreparedListener listener)设置准备回调
setOnErrorListener(IMediaPlayer.OnErrorListener listener)设置失败回调
setOnInfoListener(OnInfoListener listener)设置播放状态信息回调
setOnVideoSizeChangedListener(OnVideoSizeChangedListener listener)设置视频尺寸信息回调
setOnSeekCompleteListener(OnSeekCompleteListener listener)设置拖动进度完成回调
setSpeedListener(ReplaySpeedListener speedListener)设置视频缓冲的网速

1.2.2 回调事件api

回调事件同直播

1.2.3 关键代码示例

设置视频展示布局

设置文档展示的控件布局:

初始化播放器并设置播放参数

获取Surface

下面是通过实现SurfaceTextureListener回调获得

1.2.4 集成说明

完成上面的步骤后,基本上我们就能够观看到直播回放的视频画面和文档画面了,也就基本完成了获得场景视频直播回放的核心功能的集成,即观看回放视频和观看回放文档的功能。

2. 回放其他功能

功能使用时相关的核心类:DWLiveReplayListener(回放回调接口类),DWLiveReplay(回放核心类)。

2.1 聊天功能

回放的聊天功能只包括公共聊天内容,此功能为方法回调功能,相关类DWLiveReplayListener,相关方法如下:

方法说明
onChatMessage(TreeSet replayChatMsgs)全量回调回放聊天信息
onChatMessagePart(TreeSet chatMsgs)分段回调回放聊天信息

其中回调回来的对象ReplayChatMsg属性信息如下

主动获取聊天数据 相关类DWLiveReplay

方法说明
getAllChats(final BaseFunction<TreeSet> func)获取回放聊天信息(需在播放成功之后调用)

2.2 问答功能

回放的问答的功能包括已公开回答问答和已发布的答案,此功能为方法回调功能,相关类DWLiveReplayListener相关方法如下:

方法说明
onQuestionAnswer(TreeSet qaMsgs)获取回放问答信息

返回对象ReplayQAMsg包含问题和回答列表,如何操作该类消息,请查看demo

主动获取问答数据 相关类DWLiveReplay

方法说明
getAllQAs(final BaseFunction<TreeSet> func)获取所有的问答数据

其中 ReplayQuestionMsg 数据中包含的字段信息如下:

其中 ReplayAnswerMsg 数据中包含的字段信息如下:

2.3 广播功能

回放的广播的功能是直播时发布的广播信息列表,此功能为方法回调功能,相关类DWLiveReplayListener,相关方法如下:

方法说明
onBroadCastMessage(ArrayList broadCastMsgList)获取广播信息

返回对象ReplayBroadCastMsg属性信息如下

主动获取广播数据 相关类DWLiveReplay

方法说明
getAllBoardCasts(final BaseFunction<ArrayList> func)获取所有的广播数据

2.4 回放页面信息

回放页面信息是通过回调返回给上层调用,此功能为回调功能,相关类是DWLiveReplayListener,相关方法如下

方法说明
onPageInfoList(ArrayList infoList)回放页面信息
onPageChange(String docId, String docName, int docWidth ,int docHeight, int pageNum, int docTotalPage);回调当前翻页的信息

返回列表对象ReplayPageInfo属性信息如下:

2.5 切换线路功能 (2021年10月08日之后不再进行维护)

由于该方法不兼容清晰度的切换,故废弃该方法,使用2.6清晰度切换2.7线路切换替代

回放可根据返回的线路索引进行线路切换

主动调用方法

方法说明
changeLineWithPlayParameter(ReplayLineConfig config, ReplayLineSwitchListener callback)切换音视频线路、清晰度方法,已过时

监听回调方法在DWLiveReplayListener中

方法说明
numberOfReceivedLines(int lines)回放线路回调,已过时
numberOfReceivedLinesWithVideoAndAudio(List videoLines, ReplayAudioLineParams audioLines)回放线路 清晰度回调,已过时

参数属性信息如下:

 

2.6 清晰度切换

回放可根据返回的清晰度列表进行清晰度切换

主动调用方法

方法说明
changeQuality(int quality, ReplayChangeSourceListener changeCallBack)切换清晰度

监听回调方法在DWLiveReplayListener中,该api会存在多次回调 如:切换清晰度、调用开始播放api、从音频切回到视频模式

方法说明
onHDReceivedVideoQuality(List videoQuality, ReplayQualityinfo currentQuality)回调清晰度列表和当前播放的清晰度

主动调用方法中ReplayChangeSourceListener类说明如下

回调方法中ReplayQualityinfo类属性信息如下:

 

2.7 线路切换

回放可根据返回的线路列表进行线路切换

主动调用方法

方法说明
changeLine(int index,ReplayChangeSourceListener changeCallBack)切换线路

监听回调方法在DWLiveReplayListener中,该api会存在多次回调 如:切换清晰度、调用开始播放api、音频/视频模式切换

方法说明
onHDReceivedVideoAudioLines(List lines, int currentLineIndex)回调清晰度列表和当前播放的清晰度

主动调用方法中ReplayChangeSourceListener类说明如下

回调方法中ReplayLineInfo参数属性信息如下:

2.8 音视频播放模式切换

回放可切换播放模式

主动调用方法

方法说明
changePlayMode(PlayMode playMode,ReplayChangeSourceListener changeCallBack)切换播放模式

监听回调方法在DWLiveReplayListener中, 该api会存在多次回调 如:调用开始播放api、音频/视频模式切换

方法说明
onHDAudioMode(Audio hasAudio)是否开启音频模式

主动调用方法中PlayMode 参数属性信息如下:

ReplayChangeSourceListener详细说明如下

回调方法中Audio类参数信息如下:

2.9 回放打点功能

回放打点功能,可根据返回的打点数据展示打点数据,界面显示请参考demo

DWLiveReplayListener类监听回调方法

方法说明
onHDReplayDotList(List dotList)回放打点数据列表

其中ReplayDot类属性如下

3.0 回放随堂测功能

回放随堂测功能

DWLiveReplay类主动获取

方法说明
getAllPractices(final BaseFunction<ArrayList> func)回放随堂测数据列表

其中ReplayPracticeInfo类属性如下