Broadcast

本文档主要介绍如何使用视频直播核心组件 LiveStreamCore 模块的 LiveCoreView 开播,只有开播后,其他观众才能进入到该视频直播间中观看主播的直播。

前提条件

在使用 LiveStreamCore 前,您需要先 集成与登录 LiveStreamCore ,以便后续功能正常使用。

使用指引

步骤1:将 LiveCoreView 添加到视图上

您需要先导入 LiveStreamCore 模块,然后创建一个 LiveCoreView 视图对象,并将其添加到自己的视图上。
iOS
Android
import RTCRoomEngine
import LiveStreamCore

class BroadcastController: UIViewController {
private let liveCoreView: LiveCoreView = {
let view = LiveCoreView()
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
// 将 liveCoreView 添加到视图上,同时设置好布局约束
}
}
import com.trtc.uikit.livekit.livestreamcore.LiveCoreView;

public class LiveActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LiveCoreView liveCoreView = new LiveCoreView(this);
addContentView(liveCoreView,
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

}
}

步骤2:准备开播参数

在调用 startLiveStream 接口时需要填写关键参数 TUIRoomInfo,接下来进行详细介绍:

参数:TUIRoomInfo

TUIRoomInfo 由很多的字段构成,但通常您只需要关心如下几个字段的填写:
参数名称
字段含义
补充说明
数据类型
填写示例
roomId
房间ID
只允许包含大小写英文字母(a-z、A-Z)、数字(0-9)及下划线和连词符。
字符串
"room_100001"
name
房间名称
字符串类型的房间名称。
字符串
"denny`s room"
seatMode

上麦模式

该字段只有开启麦位控制后生效。
分为“自由上麦模式(freeToTake)”和“申请上麦模式(applyToTake)”。自由上麦模式下台下观众可以自由上麦,无需申请。上麦模式下台下观众上麦需要房主或同意后才能上麦。
枚举值
TUISeatMode.applyToTake
maxSeatCount
最大麦位数
数字类型的最大麦位数,这里指最多maxSeatCount个人同时在麦上。
最大麦位数和购买的套餐包连麦人数上限一致。
数字
10
isSeatEnabled
是否开启麦位控制
布尔类型的麦位控制使能标志符。
布尔值
true
roomType
房间类型
分为“会议(conference)”和“直播(live)”两种房间类型,视频直播这里使用live。
枚举值
TUIRoomType.live

步骤3:开播

在准备好步骤2中的参数 TUIRoomInfo 后,就可以调用 startLiveStream 接口函数开播了。
在开播后,您还需要调用 startCamerastartMicrophone 连个接口开启本地摄像头和麦克风,确保观众可以看到您的视频画面和听到您的声音。
iOS
Android
// 组装 TRTC 进房参数,请将 TRTCParams 中的各字段都替换成您自己的参数
let roomInfo = TUIRoomInfo()
roomInfo.roomId = "voice_100001" // 请替换成您自己的房间ID
roomInfo.name = "denny`s room" // 请替换成您自己的房间名称
roomInfo.maxSeatCount = 10 // 请替换成您购买的Live套餐包的最大麦位数
roomInfo.isSeatEnabled = true // 如果您不需要麦位控制,可以将isSeatEnabled置为false
roomInfo.roomType = .live // 房间类型请确保是直播(live)类型
roomInfo.seatMode = .applyToTake // 通常视频直播的上麦模式均为申请上麦模式(applyToTake)

self.liveCoreView.startLiveStream(roomInfo: roomInfo) { [weak self] roomInfo in
// 开播成功
guard let self = self else { return }
// 打开本地摄像头
self.liveCoreView.startCamera(useFrontCamera: true) { // 这里选择打开前置摄像头,您也可以传入false打开后置摄像头
// 打开本地摄像头成功
} onError: { code, message in
// 打开本地摄像头失败
}
//打开本地麦克风
self.liveCoreView.startMicrophone {
// 打开本地麦克风成功
} onError: { code, message in
// 打开本地麦克风失败
}
} onError: { code, message in
// 开播失败
}
TUIRoomDefine.RoomInfo roomInfo = new TUIRoomDefine.RoomInfo();
roomInfo.roomId = "voice_100001"; // 请替换成您自己的房间ID
roomInfo.name = "denny's room"; // 请替换成您自己的房间名称
roomInfo.maxSeatCount = 10; // 请替换成您购买的Live套餐包的最大麦位数
roomInfo.isSeatEnabled = true; // 如果您不需要麦位控制,可以将 isSeatEnabled 置为 false
roomInfo.roomType = TUIRoomDefine.RoomType.LIVE; // 房间类型请确保是直播(live)类型
roomInfo.seatMode = TUIRoomDefine.SeatMode.APPLY_TO_TAKE; // 通常视频直播的上麦模式均为申请上麦模式(applyToTake)

liveCoreView.startLiveStream(roomInfo, new TUIRoomDefine.GetRoomInfoCallback() {
@Override
public void onSuccess(TUIRoomDefine.RoomInfo roomInfo) {
// 开播成功
liveCoreView.startCamera(true, new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
// 打开本地摄像头成功
}

@Override
public void onError(TUICommonDefine.Error error, String message) {
// 打开本地摄像头失败
}
});

liveCoreView.startMicrophone( new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
// 打开本地麦克风成功
}

@Override
public void onError(TUICommonDefine.Error error, String message) {
// 打开本地麦克风失败
}
});
}

@Override
public void onError(TUICommonDefine.Error error, String message) {
// 开播失败
}
});