#LiveSDK直播基础接口简介
LiveSDK基于ILiveSDK,实现直播业务功能封装,方便开发者快速搭建自己的直播服务平台
LiveSDK在Android Studio上开发。 导入只需要在gradle里增加一行(后面是版本号),查看版本更新说明
compile 'com.tencent.livesdk:livesdk:1.0.1'
##简单直播流程示例
###1 初始化
| 接口名 | 接口描述 |
|---|---|
| initSDK | iLiveSDK的部分类的预初始化,是所有行为的第一步,告知身份appId |
| 参数类型 | 说明 |
|---|---|
| Conext | 建议用AppcalicationContext |
| int | 传入业务方appid |
| int | 传入业务方 accounttype |
*示例
//iLiveSDK初始化
ILiveSDK.getInstance().initSdk(getApplicationContext(), appid, accoutype);
//初始化直播场景
ILVLiveConfig liveConfig = new ILVLiveConfig();
ILVLiveManager.getInstance().init(liveConfig);###2 账号登录
| 接口名 | 接口描述 |
|---|---|
| iLiveLogin | 使用托管方式或独立模式,在获取到用户的sig后,使用登录接口,告知后台音视频模块上线了(包括avsdk) |
| 参数类型 | 说明 |
|---|---|
| String | 用户id,在直播过程中的唯一标识 |
| String | 鉴权的密钥Sig 如果是独立登录方式,是业务方后台计算生成后下发的 |
| ILiveCallBack | 帐号登录回调接口。通知上线是否成功 |
*示例
ILiveLoginManager.getInstance().iLiveLogin(ILiveSDK.getInstance().getMyUserId(), "123456", new ILiveCallBack() {
@Override
public void onSuccess(Object data) {
bLogin = true;
Toast.makeText(ContactActivity.this, "login success !", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(String module, int errCode, String errMsg) {
Toast.makeText(ContactActivity.this, module + "|login fail " + errCode + " " + errMsg, Toast.LENGTH_SHORT).show();
}
});###3 创建房间
| 接口名 | 接口描述 |
|---|---|
| createRoom | 创建一个直播,只有在初始化和登录成功之后才能创建直播 |
| 参数类型 | 说明 |
|---|---|
| int | 房间id 房间唯一标识 建议由业务方后台统一分配 |
| ILiveRoomOption | 房间配置项 可以设置角色 权限 主播ID 摄像头参数等 具体参考类ILiveRoomOption |
| ILiveCallBack | 创建房间回调接口。通知创建房间是否成功 |
//创建房间配置项
ILiveRoomOption hostOption = new ILiveRoomOption(null)
.controlRole(Constants.HOST_ROLE)//角色设置
.authBits(AVRoomMulti.AUTH_BITS_DEFAULT)//权限设置
.cameraId(ILiveConstants.FRONT_CAMERA)//摄像头前置后置
.videoRecvMode(AVRoomMulti.VIDEO_RECV_MODE_SEMI_AUTO_RECV_CAMERA_VIDEO);//是否开始半自动接收
//创建房间
ILVLiveManager.getInstance().createRoom(room, hostOption, new ILiveCallBack() {
@Override
public void onSuccess(Object data) {
Toast.makeText(LiveActivity.this, "create room ok", Toast.LENGTH_SHORT).show();
logoutBtn.setVisibility(View.INVISIBLE);
backBtn.setVisibility(View.VISIBLE);
}
@Override
public void onError(String module, int errCode, String errMsg) {
Toast.makeText(LiveActivity.this, module + "|create fail " + errMsg + " " + errMsg, Toast.LENGTH_SHORT).show();
}
});###4 加入房间
| 接口名 | 接口描述 |
|---|---|
| joinRoom | 观众角色调用加入房间接口 |
| 参数类型 | 说明 |
|---|---|
| int | 房间id 房间唯一标识 建议由业务方后台统一分配 |
| ILiveRoomOption | 房间配置项 可以设置角色 权限 主播ID 摄像头参数等 具体参考类ILiveRoomOption |
| ILiveCallBack | 加入房间回调接口。通知加入房间是否成功 |
//加入房间配置项
ILiveRoomOption memberOption = new ILiveRoomOption(hostId)
.autoCamera(false) //是否自动打开摄像头
.controlRole(Constants.NORMAL_MEMBER_ROLE) //角色设置
.authBits(AVRoomMulti.AUTH_BITS_JOIN_ROOM | AVRoomMulti.AUTH_BITS_RECV_AUDIO | AVRoomMulti.AUTH_BITS_RECV_CAMERA_VIDEO | AVRoomMulti.AUTH_BITS_RECV_SCREEN_VIDEO) //权限设置
.videoRecvMode(AVRoomMulti.VIDEO_RECV_MODE_SEMI_AUTO_RECV_CAMERA_VIDEO) //是否开始半自动接收
.autoMic(false);//是否自动打开mic
//加入房间
ILVLiveManager.getInstance().joinRoom(room, memberOption, new ILiveCallBack() {
@Override
public void onSuccess(Object data) {
bEnterRoom = true;
Toast.makeText(LiveActivity.this, "join room ok ", Toast.LENGTH_SHORT).show();
logoutBtn.setVisibility(View.INVISIBLE);
backBtn.setVisibility(View.VISIBLE);
}
@Override
public void onError(String module, int errCode, String errMsg) {
Toast.makeText(LiveActivity.this, module + "|join fail " + errMsg + " " + errMsg, Toast.LENGTH_SHORT).show();
}
});###设置渲染层
渲染层级示例图 在界面层xml插入一个AVRootView,音视频数据最终是通过AVRootView渲染出来。考虑多屏互动情况,AVRootView实际上不是一层View而是多层AVVideoView的叠加。直播业务默认主播在第0层默认最大,其他互动观众分别在1,2,3层。每层大小都可以动态调节。
- 示例
<com.tencent.ilivesdk.view.AVRootView
android:id="@+id/av_root_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white" />
avRootView = (AVRootView) findViewById(R.id.av_root_view);
ILVLiveManager.getInstance().setAvVideoView(avRootView);##API文档 API文档1.0.1


