LiveCoreWidget
API 简介
LiveCoreWidget 是我们开发视频直播 UIKit 的一个基础控件,该核心控件提供了 开播前画面预览、开启视频直播、关闭视频直播,直播间内和观众连线,跨房和其他主播连线等丰富的 API。
API 概览
API | 描述 |
创建 LiveCoreController 对象 | |
创建 LiveCoreWidget 对象。 | |
开启摄像头采集,并将采集到的画面显示到 LiveCoreView 上。 | |
打开本地麦克风 | |
暂停发布本地的音频流 | |
恢复发布本地暂停的音频流 | |
关闭本地摄像头 | |
关闭本地麦克风 | |
主播创建直播间并开始推流 | |
主播停止推流并销毁直播间 | |
观众加入某个主播的直播间 | |
观众离开某个主播的直播间 | |
观众请求和主播连线 | |
观众取消和主播连线的请求 | |
主播响应观众连线的请求 | |
主播断开连线的观众 | |
观众自己停止和主播的连线 | |
主播请求和另外一个直播间的主播连线 | |
主播取消和另外一个直播间的主播连线的请求 | |
主播响应连线请求 | |
主播断开连线 | |
注册一个连线事件回调 | |
反注册一个连线事件回调 | |
发起 PK 请求 | |
取消发起 PK 请求 | |
响应 PK 请求 | |
退出 PK | |
注册一个 PK 事件回调 | |
反注册一个 PK 事件回调 | |
设置连线主播视频画面的布局模式 | |
预览房间视频流 | |
停止预览房间视频流 |
API 详情
LiveCoreController
创建一个 LiveCoreController 对象实例。
LiveCoreController()
返回值:LiveCoreController
LiveCoreWidget
创建一个 LiveCoreWidget 对象实例。
LiveCoreWidget({super.key,required this.controller,this.videoWidgetBuilder});
参数:
参数 | 类型 | 含义 |
key | Key? | Flutter 控制如何用一个新 widget 替换 旧 widget 的参数 |
controller | LiveCoreWidget 的控制器,负责提供视频直播场景 API | |
videoWidgetBuilder | 自定义视图挂件 widget 构造器 |
返回值:LiveCoreWidget
startCamera
开始摄像头采集并将采集到的画面显示到 LiveCoreWidget 视图上。
Future<TUIActionCallback> startCamera(bool useFrontCamera)
参数:
参数 | 类型 | 含义 |
useFrontCamera | bool | true:使用前置摄像头;false:使用后置摄像头 |
startMicrophone
打开本地麦克风。
Future<TUIActionCallback> startMicrophone()
muteMicrophone
暂停发布本地的音频流。
void muteMicrophone()
返回值:void
unmuteMicrophone
恢复发布本地暂停的音频流。
Future<TUIActionCallback> unmuteMicrophone()
返回值:void
stopCamera
关闭本地摄像头。
void stopCamera()
返回值:void
stopMicrophone
关闭本地麦克风。
void stopMicrophone()
返回值:void
startLiveStream
主播创建直播间并开始推流。
Future<TUIValueCallBack<TUIRoomInfo>> startLiveStream(TUIRoomInfo roomInfo)
参数:
参数 | 类型 | 含义 |
roomInfo | 创建直播间的信息 |
stopLiveStream
主播停止推流并销毁直播间。
Future<TUIActionCallback> stopLiveStream()
joinLiveStream
观众加入某个主播的直播间。
Future<TUIValueCallBack<TUIRoomInfo>> joinLiveStream(String roomId)
参数:
参数 | 类型 | 含义 |
roomId | String | 直播间 ID |
leaveLiveStream
观众离开某个主播的直播间。
Future<TUIActionCallback> leaveLiveStream()
requestIntraRoomConnection
观众请求和主播连线。
Future<TUIActionCallback> requestIntraRoomConnection(String userId,int timeout,bool openCamera)
参数:
参数 | 类型 | 含义 |
userId | String | 用户 ID,如果传入主播ID,则代表观众请求和主播连线(传入空字符串时默认代表主播UserID)。为其他用户的UserID时,则代表主播邀请对应userId的用户连线。 |
timeout | int | 请求超时时长,单位: 秒。 |
openCamera | bool | 连麦成功后是否打开摄像头。true:视频连麦, false:语音连麦。 |
cancelIntraRoomConnection
观众取消和主播连线的请求。
Future<TUIActionCallback> cancelIntraRoomConnection(String userId)
参数:
参数 | 类型 | 含义 |
userId | String | 取消连麦的用户 ID,如果传入主播ID,则代表观众取消和主播连线的请求(传入空字符串时默认代表主播UserID)。为其他用户的UserID时,则代表主播取消邀请对应 userId 的用户连线。 |
respondIntraRoomConnection
主播响应观众连线的请求。
Future<TUIActionCallback> respondIntraRoomConnection(String userId, bool isAccepted)
参数:
参数 | 类型 | 含义 |
userId | String | 主播响应观众连线的观众user ID。若传入主播的User ID,则代表观众响应主播的邀请连线(传入空字符串时默认代表主播UserID)。 |
isAccepted | bool | 是否接受连麦请求,true:同意连麦请求,false:拒绝连麦请求 |
disconnectUser
主播断开连线的观众。
Future<TUIActionCallback> disconnectUser(String userId)
参数:
参数 | 类型 | 含义 |
userId | String | 主播需要断开连麦的用户 ID |
terminateIntraRoomConnection
观众自己停止和主播的连线。
Future<TUIActionCallback> terminateIntraRoomConnection()
requestCrossRoomConnection
主播请求和另外一个直播间的主播连线。
Future<TUIValueCallBack<TUIConnectionCode?>> requestCrossRoomConnection(String roomId, int timeout)
参数:
参数 | 类型 | 含义 |
roomId | String | 请求跨房连线的房间 ID。 |
timeout | int | 请求的超时时长,单位:秒。 |
cancelCrossRoomConnection
主播取消和另外一个直播间的主播连线的请求。
Future<TUIActionCallback> cancelCrossRoomConnection(String roomId)
参数:
参数 | 类型 | 含义 |
roomId | String | 取消连线的房间 ID |
respondToCrossRoomConnection
主播响应连线请求。
Future<TUIActionCallback> respondToCrossRoomConnection(String roomId, bool isAccepted)
参数:
参数 | 类型 | 含义 |
roomId | String | 响应连线的房间 ID |
isAccepted | bool | 是否同意连线,true:同意连线,false:拒绝连线 |
terminateCrossRoomConnection
主播断开连线。
Future<TUIActionCallback> terminateCrossRoomConnection()
registerConnectionObserver
注册一个连线事件回调。
void registerConnectionObserver(ConnectionObserver observer)
参数:
参数 | 类型 | 含义 |
observer | 连线事件的回调对象 |
返回值:void
unregisterConnectionObserver
反注册一个连线事件回调。
void unregisterConnectionObserver(ConnectionObserver observer)
参数:
参数 | 类型 | 含义 |
observer | 连线事件的回调对象 |
返回值:void
requestBattle
发起 PK 请求。
Future<TUIValueCallBack<BattleRequestCallback>> requestBattle(TUIBattleConfig config,List<String> userIdList,int timeout)
参数:
参数 | 类型 | 含义 |
config | PK 参数配置,含PK持续时长和扩展信息等。PK目前支持最大时长为300秒 | |
userIdList | List<String> | 邀请 PK 的房主userId |
timeout | int | PK 请求超时时长,单位为秒 |
cancelBattle
取消发起 PK 请求。
Future<TUIActionCallback> cancelBattle(String battleId, List<String> userIdList)
参数:
参数 | 类型 | 含义 |
battleId | String | PK 唯一表示符 |
userIdList | List<String> | 取消邀请 PK 的房主userId |
respondToBattle
响应 PK 请求。
Future<TUIActionCallback> respondToBattle(String battleId, bool isAccepted)
参数:
参数 | 类型 | 含义 |
battleId | String | PK 唯一表示符 |
isAccepted | bool | 是否同意 PK 邀请 |
terminateBattle
退出 PK。
Future<TUIActionCallback> terminateBattle(String battleId)
参数:
参数 | 类型 | 含义 |
battleId | String | PK 唯一表示符 |
registerBattleObserver
注册一个 PK 事件回调。
void registerBattleObserver(BattleObserver observer)
参数:
参数 | 类型 | 含义 |
observer | PK 事件的回调对象 |
返回值:void
unregisterBattleObserver
反注册一个连线事件回调。
void unregisterBattleObserver(BattleObserver observer)
参数:
参数 | 类型 | 含义 |
observer | PK 事件的回调对象 |
返回值:void
setLayoutMode
设置连线主播视频画面的布局模式。
void setLayoutMode(LayoutMode layoutMode,bool showEmptySeat,String? layoutJson)
参数:
参数 | 类型 | 含义 |
layoutModel | LayoutMode | 连线时的布局模式,支持宫格布局、浮窗布局、自定义布局。 |
showEmptySeat | bool | 是否展示空麦位(暂不可用) |
layoutJson | String? |
返回值:void
startPreloadVideoStream
预览房间视频流。
void startPreloadVideoStream(String roomId,bool isMuteAudio,int viewId,TUIPlayCallback? playCallback)
参数:
参数 | 类型 | 含义 |
roomId | String | 要预览视频流的房间号 |
isMuteAudio | bool | 是否静音预览视频流 |
viewId | int | 创建VideoView时返回的的viewId |
playCallback | TUIPlayCallback? | 预览视频流的回调函数 |
返回值:void
stopPreloadVideoStream
停止预览房间视频流。
void stopPreloadVideoStream(String roomId)
参数:
参数 | 类型 | 含义 |
roomId | String | 要停止预览视频流的房间号 |
返回值:void
类型定义
类型 | 含义 |
连线时的布局模式 | |
连线用户数据 | |
PK 用户视图位置数据 | |
PK 请求结果回调 | |
连麦时的视图挂件 widget 构造器 | |
连线时的视图挂件 widget 构造器 | |
PK时对应主播视频上面的视图挂件 widget 构造器 | |
PK时全屏的的视图挂件 widget 构造器 | |
自定义视图挂件 widget 构造器 | |
连麦的用户列表发生改变的回调 | |
收到连麦请求的回调 | |
收到取消连麦请求的回调 | |
连麦请求被同意的回调 | |
连麦请求被拒绝的回调 | |
连麦请求超时的回调 | |
主播断开和此观众连麦的回调 | |
观众主动断开连线的回调 | |
跨房连线的房间列表发生改变回调 | |
收到跨房连线请求的回调 | |
收到取消跨房连线请求的回调 | |
收到同意跨房连线的回调 | |
收到拒绝跨房连线的回调 | |
收到跨房连线超时的回调 | |
收到断开跨房连线的回调 | |
收到 PK 开始的回调 | |
收到 PK 结束的回调 | |
收到有人加入 PK 结束的回调 | |
收到有人离开 PK 结束的回调 | |
收到 PK 比分发生变化的回调 | |
收到 PK 请求的回调 | |
收到取消 PK 请求的回调 | |
收到 PK 请求超时的回调 | |
收到同意 PK 请求的回调 | |
收到拒绝 PK 请求的回调 | |
收到房间销毁的回调 |
LayoutMode
麦位列表的布局模式
枚举值 | 含义 |
focus | 聚焦布局 |
grid | 宫格布局 |
vertical | 纵向布局 |
free | 自定义布局 |
CoHostUser
连线用户数据
属性 | 类型 | 描述 |
connectionUser | 连线用户个人信息 | |
hasAudioStream | bool | 连线用户音频流信息 |
hasVideoStream | bool | 连线用户视频流信息 |
BattleUserWidgetModel
属性 | 类型 | 描述 |
battleUser | PK 用户个人信息 | |
rect | Rect | PK 用户视图位置信息 |
BattleRequestCallback
PK 请求结果回调
属性 | 类型 | 描述 |
battleId | String | PK 唯一标识符 |
requestedUserList | PK 邀请用户列表 | |
onError | PK 邀请错误结果 |
CoGuestWidgetBuilder
连麦时的视图挂件
widget
构造器typedef CoGuestWidgetBuilder = Widget Function(BuildContext context,TUIUserInfo userInfo);
参数:
参数 | 类型 | 含义 |
context | BuildContext | 上下文 |
userInfo | 连麦者用户信息 |
CoHostWidgetBuilder
连麦时的视图挂件
widget
构造器typedef CoHostWidgetBuilder = Widget Function(BuildContext context,CoHostUser userInfo);
参数:
参数 | 类型 | 含义 |
context | BuildContext | 上下文 |
userInfo | 连线用户数据 |
BattleWidgetBuilder
PK时对应主播视频上面的视图挂件
widget
构造器typedef BattleWidgetBuilder = Widget Function(BuildContext context,TUIBattleUser userInfo);
参数:
参数 | 类型 | 含义 |
context | BuildContext | 上下文 |
userInfo | 参与 PK 的用户信息 |
BattleContainerWidgetBuilder
PK时全屏的的视图挂件
widget
构造器typedef BattleContainerWidgetBuilder = Widget Function(BuildContext context,List<BattleUserWidgetModel> battleModels);
参数:
参数 | 类型 | 含义 |
context | BuildContext | 上下文 |
battleModels | PK 中用户的视图位置布局信息 |
VideoWidgetBuilder
自定义视图挂件 widget 构造器
typedef OnSeatWidgetTap = void Function(TUISeatInfo seatInfo);
参数:
参数 | 类型 | 含义 |
seatInfo | 麦位信息 |
OnConnectedUsersUpdated
连麦的用户列表发生改变的回调
typedef OnConnectedUsersUpdated = void Function(List<TUIUserInfo> userList,List<TUIUserInfo> joinList,List<TUIUserInfo> leaveList);
参数:
参数 | 类型 | 含义 |
userList | 连麦用户列表 | |
joinList | 加入连麦的用户列表 | |
leaveList | 离开连麦的用户列表 |
OnUserConnectionRequest
收到连麦请求的回调
typedef OnUserConnectionRequest = void Function(TUIUserInfo inviterUser);
参数:
参数 | 类型 | 含义 |
inviterUser | 连麦用户信息 |
OnUserConnectionCancelled
收到取消连麦请求的回调
typedef OnUserConnectionCancelled = void Function(TUIUserInfo inviterUser);
参数:
参数 | 类型 | 含义 |
inviterUser | 连麦用户信息 |
OnUserConnectionAccepted
连麦请求被同意的回调
typedef OnUserConnectionAccepted = void Function(TUIUserInfo userInfo);
参数:
参数 | 类型 | 含义 |
userInfo | 连麦用户信息 |
OnUserConnectionRejected
连麦请求被拒绝的回调
typedef OnUserConnectionRejected = void Function(TUIUserInfo userInfo);
参数:
参数 | 类型 | 含义 |
userInfo | 连麦用户信息 |
OnUserConnectionTimeout
连麦请求超时的回调
typedef OnUserConnectionTimeout = void Function(TUIUserInfo userInfo);
参数:
参数 | 类型 | 含义 |
userInfo | 连麦用户信息 |
OnUserConnectionTerminated
主播断开和此观众连麦的回调
typedef OnUserConnectionRejected = void Function();
OnUserConnectionExited
观众主动断开连线的回调
typedef OnUserConnectionExited = void Function(TUIUserInfo userInfo);
参数:
参数 | 类型 | 含义 |
userInfo | 连麦用户信息 |
OnConnectedRoomsUpdated
跨房连线的房间列表发生改变回调
typedef OnConnectedRoomsUpdated = void Function(List<TUIConnectionUser> hostUserList);
参数:
参数 | 类型 | 含义 |
hostUserList | 连线用户列表 |
OnCrossRoomConnectionRequest
收到跨房连线请求的回调
typedef OnCrossRoomConnectionRequest = void Function(TUIConnectionUser hostUser);
参数:
参数 | 类型 | 含义 |
hostUser | 连线用户 |
OnCrossRoomConnectionCancelled
收到取消跨房连线请求的回调
typedef OnCrossRoomConnectionCancelled = void Function(TUIConnectionUser hostUser);
参数:
参数 | 类型 | 含义 |
hostUser | 连线用户 |
OnCrossRoomConnectionAccepted
收到同意跨房连线的回调
typedef OnCrossRoomConnectionAccepted = void Function(TUIConnectionUser hostUser);
参数:
参数 | 类型 | 含义 |
hostUser | 连线用户 |
OnCrossRoomConnectionRejected
收到拒绝跨房连线的回调
typedef OnCrossRoomConnectionRejected = void Function(TUIConnectionUser hostUser);
参数:
参数 | 类型 | 含义 |
hostUser | 连线用户 |
OnCrossRoomConnectionTimeout
收到跨房连线超时的回调
typedef OnCrossRoomConnectionTimeout = void Function(TUIConnectionUser inviter,TUIConnectionUser invitee);
参数:
参数 | 类型 | 含义 |
inviter | 连线请求发起方 | |
invitee | 连线请求受邀方 |
OnCrossRoomConnectionExited
收到断开跨房连线的回调
typedef OnCrossRoomConnectionExited = void Function(TUIConnectionUser hostUser);
参数:
参数 | 类型 | 含义 |
hostUser | 连线用户 |
OnBattleStarted
收到 PK 开始的回调
typedef OnBattleStarted = void Function(TUIBattleInfo battleInfo);
参数:
参数 | 类型 | 含义 |
battleInfo | PK 信息 |
OnBattleEnded
收到 PK 结束的回调
typedef OnBattleEnded = void Function(TUIBattleInfo battleInfo);
参数:
参数 | 类型 | 含义 |
battleInfo | PK 信息 |
OnUserJoinBattle
收到有人加入 PK 结束的回调
typedef OnUserJoinBattle = void Function(String battleId,TUIBattleUser battleUser);
参数:
参数 | 类型 | 含义 |
battleId | String | PK 唯一标识符 |
battleUser | PK 用户 |
OnUserExitBattle
收到有人离开 PK 结束的回调
typedef OnUserExitBattle = void Function(String battleId,TUIBattleUser battleUser);
参数:
参数 | 类型 | 含义 |
battleId | String | PK 唯一标识符 |
battleUser | PK 用户 |
OnBattleScoreChanged
收到 PK 比分发生变化的回调
typedef OnBattleScoreChanged = void Function(String battleId,List<TUIBattleUser> battleUserList);
参数:
参数 | 类型 | 含义 |
battleId | String | PK 唯一标识符 |
battleUserList | PK 用户列表 |
OnBattleRequestReceived
收到 PK 请求的回调
typedef OnBattleRequestReceived = void Function(String battleId,TUIBattleUser inviter,TUIBattleUser invitee);
参数:
参数 | 类型 | 含义 |
battleId | String | PK 唯一标识符 |
inviter | PK 邀请发起方 | |
invitee | PK 邀请受邀方 |
OnBattleRequestCancelled
收到取消 PK 请求的回调
typedef OnBattleRequestCancelled = void Function(String battleId,TUIBattleUser inviter,TUIBattleUser invitee);
参数:
参数 | 类型 | 含义 |
battleId | String | PK 唯一标识符 |
inviter | PK 邀请发起方 | |
invitee | PK 邀请受邀方 |
OnBattleRequestTimeout
收到 PK 请求超时的回调
typedef OnBattleRequestTimeout = void Function(String battleId,TUIBattleUser inviter,TUIBattleUser invitee);
参数:
参数 | 类型 | 含义 |
battleId | String | PK 唯一标识符 |
inviter | PK 邀请发起方 | |
invitee | PK 邀请受邀方 |
OnBattleRequestAccept
收到同意 PK 请求的回调
typedef OnBattleRequestAccept = void Function(String battleId,TUIBattleUser inviter,TUIBattleUser invitee);
参数:
参数 | 类型 | 含义 |
battleId | String | PK 唯一标识符 |
inviter | PK 邀请发起方 | |
invitee | PK 邀请受邀方 |
OnBattleRequestReject
收到拒绝 PK 请求的回调
typedef OnBattleRequestReject = void Function(String battleId,TUIBattleUser inviter,TUIBattleUser invitee);
参数:
参数 | 类型 | 含义 |
battleId | String | PK 唯一标识符 |
inviter | PK 邀请发起方 | |
invitee | PK 邀请受邀方 |
OnRoomDismissed
收到房间销毁的回调
typedef OnRoomDismissed = void Function(String roomId);
参数:
参数 | 类型 | 含义 |
roomId | String | 房间 Id |
ConnectionObserver 事件定义
事件列表 | 类型 | 含义 |
onConnectedUsersUpdated | 连麦的用户列表发生改变的回调 | |
onUserConnectionRequest | 收到连麦请求的回调 | |
onUserConnectionCancelled | 收到取消连麦请求的回调 | |
onUserConnectionAccepted | 连麦请求被同意的回调 | |
onUserConnectionRejected | 连麦请求被拒绝的回调 | |
onUserConnectionTimeout | 连麦请求超时的回调 | |
onUserConnectionTerminated | 主播断开和此观众连麦的回调 | |
onUserConnectionExited | 观众主动断开连线的回调 | |
onConnectedRoomsUpdated | 跨房连线的房间列表发生改变回调 | |
onCrossRoomConnectionRequest | 收到跨房连线请求的回调 | |
onCrossRoomConnectionCancelled | 收到取消跨房连线请求的回调 | |
onCrossRoomConnectionAccepted | 收到同意跨房连线的回调 | |
onCrossRoomConnectionRejected | 收到拒绝跨房连线的回调 | |
onCrossRoomConnectionTimeout | 收到跨房连线超时的回调 | |
onCrossRoomConnectionExited | 收到断开跨房连线的回调 | |
onRoomDismissed | 收到房间销毁的回调 |
BattleObser 事件定义
事件列表 | 类型 | 含义 |
onBattleStarted | 收到 PK 开始的回调 | |
onBattleEnded | 收到 PK 结束的回调 | |
onUserJoinBattle | 收到有人加入 PK 结束的回调 | |
onUserExitBattle | 收到有人离开 PK 结束的回调 | |
onBattleScoreChanged | 收到 PK 比分发生变化的回调 | |
onBattleRequestReceived | 收到 PK 请求的回调 | |
onBattleRequestCancelled | 收到取消 PK 请求的回调 | |
onBattleRequestTimeout | 收到 PK 请求超时的回调 | |
onBattleRequestAccept | 收到同意 PK 请求的回调 | |
onBattleRequestReject | 收到拒绝 PK 请求的回调 |