准备工作
Flash 互动
创建互动直播
Interactive 主要实现互动相关的功能模块,获取实例的方式如下:
Interactive 参数 | 描述 |
---|---|
context | 上下文 |
messageCallback | 消息回调,用于接收互动的Socket消息,必须实现 |
roomCallback | 房间回调,用于接收互动房间中的一些订阅消息,比如流的添加,移除 必须实现 |
private InterActive interactive;
interactive = new InterActive(interActView.getContext(), new RoomCallback(), new MessageEventCallback());
互动房间回调
class RoomCallback implements InterActive.RoomCallback {
@Override
public void onDidConnect() {
//进入房间
}
@Override
public void onDidError() {
//进入房间失败
}
@Override
public void onDidPublishStream() {
// 调用publish方法,上麦成功后回调
}
@Override
public void onDidUnPublishStream() {
//调用unpublish,下麦成功后回调
}
@Override
public void onDidSubscribeStream(Stream stream, final VHRenderView newRenderView) {
//接收订阅的Stream ,VHRenderView渲染View,直接显示就可以使用
}
@Override
public void onDidRoomStatus(Room room, Room.VHRoomStatus vhRoomStatus) {
switch (vhRoomStatus) {
case VHRoomStatusDisconnected:// 异常退出
break;
case VHRoomStatusError:
break;
case VHRoomStatusReady:
break;
case VHRoomStatusConnected: // 重连进房间
break;
default:
break;
}
}
@Override
public void onDidRemoveStream(Room room, Stream stream) {
//有流退出时回调,用于取消订阅该流
}
}
}
获取互动房间信息
获取互动房间信息 VhallSDK.initInteractive 调用方式如下:
initInteractive 参数 | 描述 |
---|---|
webinarId | 活动ID |
nickname | 用户名称 (如果第三方登陆可以传递空) |
用户标识 (如果第三方登陆可以传递空) | |
password | K值 (暂不可用) |
RequestCallback | 接口请求回调信息 成功or失败 |
interactive.init(mParam.watchId, "", "", "", new RequestCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(int errorCode, String errorMsg) {
}
});
###设置互动的分辨率
interactive.setDefinition(definition);
分辨率常量 | 描述 |
---|---|
VHILSS.SD | 低清分辨率 192*144(默认) |
VHILSS.HD | 标清分辨率 320*240 |
VHILSS.UHD | 高清分辨率 480*360 |
此方法必须在setLocalView 之前调用 如自定义参数option中有设置,则该方法失效
设置本地预览
参考InteractivePresenter
//VHRenderView 互动渲染的View,主要用于采集Camera
VHRenderView renderView = new VHRenderView(context);
renderView.setScalingMode(scaleType);//设置缩放模式
renderView.init(interactive.getEglBase().getEglBaseContext(),null);//初始化渲染视图,渲染事件监听如有需要可自行实现;
/**
* 互动控制器添加本地渲染视图
*
* @param localView 本地预览渲染视图
* @param streamType 互动流类型
* @param attributes 流信息自定义内容,订阅端原样返回;
*/
interactive.setLocalView(renderView,Stream.VhallStreamType.VhallStreamTypeAudioAndVideo,null);
//将新建的本地渲染视图,添加到布局界面进行展示;
interFraView.addLocalView(renderView);
VHRenderView的渲染填充模式
SurfaceViewRenderer.VHRenderViewScalingMode | 说明 |
---|---|
kVHRenderViewScalingModeNone | 原始大小 |
kVHRenderViewScalingModeAspectFit | 自适应居中 |
kVHRenderViewScalingModeAspectFill | 铺满视图 |
互动流类型
VhallStreamType | 说明 |
---|---|
VhallStreamTypeOnlyAudio | 纯音频 |
VhallStreamTypeOnlyVideo | 纯视频 |
VhallStreamTypeAudioAndVideo | 音视频 |
VhallStreamTypeScreen | 桌面共享(pc端发起) |
VhallStreamTypeFile | 文件插播(pc插播) |
本地预览镜像设置
如果不希望本地预览时旋转手机产生镜像效果,可在本地渲染视图上添加镜像设置;
VHRenderView.setMirror(true);
进入房间
实现互动功能必须调用此方法
interactive.enterRoom();
下麦,当调用携带CallBack参数方法时,当接口调用成功时,会发送一条下麦消息,PC端也能收到下麦的消息,当调用空参数方法时,不会发送消息,SDK直接下麦
interactive.unpublish();
interactive.unpublish(new RequestCallback() {
@Override
public void onSuccess() {
interActView.finish();
}
@Override
public void onError(int errorCode, String errorMsg) {
}
});
上麦
房间连接成功后,可根据业务需求,自定义上麦时机;
回调onDidConnect()成功后生效;
interactive.onpublish();
下麦
为保证各设备信息同步,请保证下麦接口调用成功后再执行下麦操作;
interactive.unpublish(new RequestCallback(){});
设备状态切换
切换摄像头
切换本地采集前后置摄像头
interactive.onSwitchCamera();
切换本地禁音状态
interactive.onSwitchAudio(isOpen);
切换本地视频开关状态
interactive.onSwitchVideo(isOpen);
销毁互动模块
interactive.onDestroy();