准备工作

(1)屏幕保持常亮

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

(2)横竖屏发起视频

/**
* 如果竖屏发起设置ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
* 如果横屏发起设置ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
*/
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);

(3)设置发起布局

<com.vhall.push.VHVideoCaptureView
        android:id="@+id/cameraview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

(4)本地回显适配模式设置

推流播放器初始化成功后设置生效

	camerview.setCameraDrawMode(VHLivePushFormat.DRAW_MODE_ASPECTFILL);
适配类型 描述
VHLivePushFormat.DRAW_MODE_NONE 默认
VHLivePushFormat.DRAW_MODE_ASPECTFIT 自适应居中
VHLivePushFormat.DRAW_MODE_ASPECTFILL 铺满全屏

(5)设置美颜等级

//打开美颜功能
cameraview.setFilterEnable(true);
//设置美颜等级 1-5
cameraview.setBeautyLevel(level);

(6)设置镜像

cameraview.setMirror(boolean mirror);

发直播

发直播必须获取Token,token时效是24小时,并且唯一性,如果调用成功后之前的Token无效 , 详见获取SDK推流TOKEN。 用户如果登陆默认是子账号发直播,如果不登录,默认是主账号发直播 。 使用的Token需要用Api重新生成,否则会返回身份验证失败

初始化直播间信息:

发起参数描述:

参数字段 描述
id 活动ID(9位) , 在网页上创建
accessToken 请求API获取的Token
LoadWebinarInfoCallback 回调信息

代码展示

        VhallSDK.initBroadcast(param.broId, param.broToken, new WebinarInfoDataSource.LoadWebinarInfoCallback() {
            @Override
            public void onWebinarInfoLoaded(String jsonStr, WebinarInfo webinarInfo) {
				//jsonStr  原始数据返回
				//WebinarInfo 解析后的 房间信息封装,当vss_token与vss_room_id 非空时为H5活动
            }

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

            }
        });

初始化推流参数 VHLivePushConfig

VHLivePushConfig config = new VHLivePushConfig(VHLivePushFormat.PUSH_MODE_XHD);
config.screenOri = VHLivePushFormat.SCREEN_ORI_LANDSPACE;
config.videoBitrate = 1500*1000;
//纯音频直播时设置
//config.streamType=VHLivePushFormat.STREAM_TYPE_A;

视频分辨率类型

参数字段 描述
VHLivePushFormat.PUSH_MODE_HD 640*480
VHLivePushFormat.PUSH_MODE_XHD 1280*720
VHLivePushFormat.PUSH_MODE_XXHD 1920*1080

内部变量说明

参数字段 描述 默认值
videoFrameRate 视频帧率 15(10-30)
videoBitrate 视频码率 800*1000 b/s(与视频清晰度相关)
screenOri 横竖屏 横屏 VHLivePushFormat.SCREEN_ORI_LANDSPACE
pushTimeout 推流超时时长 5*1000 ms
pushReconnectTimes 重连次数 5
streamType 推流类型 音视频 VHLivePushFormat.STREAM_TYPE_AV

直播间横竖屏参数

参数字段 描述
VHLivePushFormat.SCREEN_ORI_LANDSPACE 横屏
VHLivePushFormat.SCREEN_ORI_PORTRAIT 竖屏

推流类型

参数字段 描述
VHLivePushFormat.STREAM_TYPE_NONE 推流内容
VHLivePushFormat.STREAM_TYPE_AV 音视频
VHLivePushFormat.STREAM_TYPE_V 纯视频
VHLivePushFormat.STREAM_TYPE_A 纯音频

初始化推流实例

Broadcast.Builder builder = new Broadcast.Builder()
        .cameraView(mView.getCameraView())//视频渲染view
        .config(config)//直播配置
        .callback(new BroadcastEventCallback())//播放器事件回调
        .chatCallback(new ChatCallback());//聊天回调
Boradcast broadcast = builder.build();

开始直播:

broadcast.start();

结束直播

参数说明:

参数字段 描述
id 活动ID(9位)
accessToken 请求API获取的Token
broadcast 发直播实例
RequestCallback 回调信息
//结束成功后,内部已调用broadcast.stop();
VhallSDK.finishBroadcast(param.broId, param.broToken, getBroadcast(), new RequestCallback());

###销毁直播实例

broadcast.destroy();

直播事件回调

private class BroadcastEventCallback implements VHPlayerListener {
        @Override
        public void onError(int errorCode, int innerErrorCode,String reason) {
            // 直播时发生错误回调,查看错误信息
        }

        @Override
        public void onStateChanged(Constants.State state) {
            // 直播时发生的状态回调
            switch (state) {
                case START:/** 开始直播*/
                    break;
                case STOP:/** 停止直播*/
                    break;
            }
        }

        @Override
        public void onEvent(int eventCode, String eventMsg) {
            switch (eventCode) {
                case Constants.Event.EVENT_UPLOAD_SPEED:
                    //推流速度
                    mView.setSpeedText(eventMsg + "/kbps");
                    break;
                case Constants.Event.EVENT_NETWORK_UNOBS:
                    mView.showMsg("网络通畅!");
                    break;
                case Constants.Event.EVENT_NETWORK_OBS:
                    mView.showMsg("网络环境差!");
                    break;
            }
        }
    }

事件码

常量 描述
Constants.Event.EVENT_UPLOAD_SPEED 推流速率(/kbps)
Constants.Event.EVENT_NETWORK_UNOBS 网络通畅
Constants.Event.EVENT_NETWORK_OBS 网络环境差

错误码

错误码 描述
10401 活动结束失败
10402 当前活动ID错误
10403 活动不属于自己
10409 第三方用户对象不存在
10411 用户套餐余额不足
20101 正在直播
20102 初始化视频信息失败
20103 预览失败,无法直播
20104 直播地址有误
20105 连接服务器失败