准备工作

  1. 屏幕保持常亮
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  1. 设置观看布局
	<!--封装TextureView 支持截屏,内置水印浮层-->
	<com.vhall.player.vod.VodPlayerView
        android:id="@+id/rl_video_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <!--仅用于视图渲染-->    
    <SurfaceView
        android:id="@+id/rl_video_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

看回放

初始化房间信息:

参数字段 描述
id 活动ID(9位)
email 唯一标识
nickname 用户名
password K值
status 活动状态
WebinarInfoDataSource.LoadWebinarInfoCallback 返回房间信息回调

备注:如果email和nickname为空,则必须登陆,如果不登录,则email和nickname不能为空,如果都传,默认取登陆信息。

        VhallSDK.initWatch(params.watchId, customeId, customNickname, params.key, watchType, new WebinarInfoDataSource.LoadWebinarInfoCallback() {
            @Override
            public void onWebinarInfoLoaded(String jsonStr, WebinarInfo webinarInfo) {
					//jsonStr 原始数据返回, webinarInfo 解析后的房间信息封装
            }

            @Override
            public void onError(int errorCode, String errorMsg) {
                                
            }
        });
    

初始化播放器实例:

WatchPlayback watchPlayback;
WatchPlayback.Builder builder = new WatchPlayback.Builder()
		.context(watchView.getActivity())
		.vodPlayView(playbackView.getVideoView())/**需要截屏,添加浮层时使用*/
//                    .surfaceView(playbackView.getVideoView())//与vodPlayerView 2选1即可
		.callback(new WatchCallback())
		.docCallback(new DocCallback());/**如果使用文档,加此回调*/
watchPlayback = builder.build();
}

开始播放

watchPlayback.start();

设置缩放模式

缩放类型 描述
Constants.VideoMode.DRAW_MODE_NONE 原始大小
Constants.VideoMode.DRAW_MODE_FIT 等比缩放居中
Constants.VideoMode.DRAW_MODE_FILL 等比拉伸居中
watchPlayerback.setScaleType(type);

暂停播放

watchPlayback.pause();

停止播放

watchPlayback.stop();

销毁播放器释放资源

watchPlayback.releasePlayer();

获取播放进度

watchPlayback.seekTo(playerCurrentPosition);

获取当前播放进度

watchPlayback.getCurrentPosition();

获取播放时长:

watchPlayback.getDuration();

是否正在播放

watchPlayback.isPlaying();

设置倍速播放(推荐使用0.5-2倍速)

watchPlayback.setSpeed(float speed);

回放事件回调


	private class WatchCallback implements VHPlayerListener {

        @Override
        public void onStateChanged(Constants.State state) {
            switch (state) {
                case IDLE://待机状态
                    break;
                case START://播放中
                    break;
                case BUFFER://缓冲中
                    break;
                case STOP://停止(等同PAUSE 可调用resume方法恢复播放)
                    break;
                case END://播放结束(内容播放结束,恢复时默认从初始位置开始)
                    break;
            }
        }

        @Override
        public void onEvent(int event, String msg) {
            switch (event) {
                case Constants.Event.EVENT_DPI_LIST:
                /** 服务器支持的视频分辨率列表*/

                    break;
                case Constants.Event.EVENT_DPI_CHANGED:
                /** 分辨率被切换为msg*/
                    break;
            }
        }

        @Override
        public void onError(int errorCode, int innerErrorCode, String msg) {
            switch (errorCode) {
                case Constants.ErrorCode.ERROR_INIT:
                /** 初始化错误*/

                    break;
                case Constants.ErrorCode.ERROR_INIT_FIRST:
                /** 未初始化*/

                    break;
            }
        }
    }

播放器状态码

状态 描叙
IDLE 待机(PREPARING)
START 开始播放(STATE_READY)
BUFFER 正在缓冲
STOP 停止播放(等同PAUSE 可调用resume方法恢复播放)
END 播放结束

播放器事件码

事件(Constants.Event) 描叙
EVENT_INIT_SUCCESS 初始化成功(仅H5播放器触发)
EVENT_DPI_LIST 支持的分辨率列表
EVENT_DPI_CHANGED 视频分辨率改变(网络变化可能引起分辨率自动切换)

错误码

错误码 描述
-1 未初始化视频信息
-2 初始化视频信息错误