主播开播(RESTful API)

最近更新时间:2026-04-10 17:42:01

我的收藏
RESTful API 开播方案适用于对直播间有强管控需求的业务。通过由业务后台统一预置房间规则(如 ID、模板及权限),实现“云端控场、多设备开播和观看”。

适用场景

通过 RESTful API 开播,您可以将直播行为与业务逻辑深度绑定,适用于对直播间有强管控需求的场景:
业务场景
核心价值
付费/预约直播
业务后台校验权限后再创建房间,确保直播资源(RoomId)可控分配,防止非法占用。
企业级/教育直播
由后台统一预设布局模板(如固定宫格布局),确保不同主播、不同终端呈现一致的视觉效果。
平台运营管控
支持服务端强制解散房间、配置管理员或封禁违规用户,实现直播全生命周期监管。

开通服务

开通服务:请参考 开通服务,获取 SDKAppID
配置应用管理员账号:在控制台 配置管理员,用于 API 身份鉴权。

步骤 1:服务端创建房间

业务后台调用 RESTful API 进行直播间配置,请参考 开播接口调用示例 调用创建房间接口。
https://xxxxxx/v4/live_engine_http_srv/create_room?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
房间必填参数说明
字段
类型
属性
说明
RoomId
String
必填
房间唯一标识,最长48个字节。
RoomType
String
必填
房间类型,固定值为 Live。
SeatTemplate
String
必填
布局模板 ID ,具体效果详见下方 设置 SeatTemplate 布局模板
Owner_Account
String
必填
房主 ID(需是已导入 Live 账号系统的账号),推荐您填写需要指定当前直播间的主播 userID
设置 SeatTemplate 布局模板
说明:
不同套餐中可配置的麦位数量有所不同,详细参见 功能与计费说明 中的连麦人数说明。
视频竖屏开播
布局类型
动态宫格布局
浮动小窗布局
固定宫格布局
固定小窗布局

模板 ID

VideoDynamicGrid9Seats
VideoDynamicFloat7Seats
VideoFixedGrid9Seats
VideoFixedFloat7Seats
最大麦位数
9
7
9
7
描述
默认布局,可根据连麦人数动态调整宫格大小。
连麦嘉宾以浮动小窗形式显示。
连麦人数固定,每个嘉宾占据一个固定宫格。
连麦人数固定,嘉宾以固定小窗形式显示。

运行效果







视频横屏开播
模板 ID VideoLandscape4Seat
最大麦位数:支持 4 个麦位(1个主播视频位,3个连麦观众音频位)。
运行效果




步骤 2:选择开播方式

RESTful API 模式下,直播间实例已由您的业务后台预先创建。为了简化客户端逻辑,LiveKit 统一了开播接口语义:主播只需调用 startLive 即可完成开播。
说明:
请确保开播主播登录使用的 userId 与服务的配置的 Owner_Account 保持一致。

移动端 App 开播


适用场景:户外直播、移动秀场、生活 VLOG,强调便携性与实时互动。
核心优势
极简集成:内置美颜、变声、弹幕、礼物、麦位管理等全套组件,自动处理复杂的音视频采集。
闭环交互:内置全套移动端互动组件(美颜、挂件、变声、弹幕、礼物、麦位管理),无需开发者手动拼接 UI。
高性能低能耗:针对移动设备深度优化,支持硬件编解码,保障长时直播不发烫、不掉帧。
场景自适应:原生支持横竖屏自动切换、断网自动重连及后台切流逻辑。
使用指引:请参考侧边目录 开播方式 对应平台的 主播开播 文档完成功能接入。以 iOS 为例,在初始化主播推流页面时,将参数 LiveInfo 实例的 LiveID 替换为服务端生成的 RoomId
// 模拟拼接 LiveInfo,仅设置从服务端获取的 roomId
let liveInfo = LiveInfo()
liveInfo.liveID = "your_server_room_id" // 填入从服务端获取的 RoomId

public init(liveInfo: LiveInfo, coreView: LiveCoreView? = nil) {
self.liveInfo = liveInfo
if let coreView = coreView {
self.coreView = coreView
} else {
self.coreView = LiveCoreView()
}
self.anchorView = AnchorView(liveInfo: liveInfo, coreView: self.coreView, behavior: .createRoom)
super.init(nibName: nil, bundle: nil)
}

Web 端浏览器开播


适用场景:电商导播、教育网课。支持在 PC 浏览器中进行多图层排版开播。
核心优势
多源排版:支持摄像头、屏幕分享、窗口分享及图片的多图层拖拽与镜像调整。
直播互动:内置观众连麦布局切换、主播 PK 连线以及全套观众管理权限(禁言/踢人)。
使用指引 (Vue3): 请参考 Web 浏览器开播完成功能接入,在接入主播开播页时将对应的 liveId 替换为服务端生成 RoomId
// 在主播开播 handleStartLive 时将 createLive 中的 liveId 替换为服务端生成 RoomId
const handleStartLive = async () => {
// 直播间
await createLive({
liveId: 'your_server_room_id', // 替换为服务端生成的 RoomId
});
};

PC 推流助手开播


适用场景:游戏直播、大型赛事、企业年会。需要高清画质与复杂的本地媒体源混流。
核心优势
视频能力:支持最高 2K/60fps 推流,具备更强的本地视频文件(MP4/MKV)混流能力。
音频特效:内置 13 种变声、11 种混响及背景音乐控制,适合专业声卡环境。
连麦布局:支持竖屏九宫格/浮窗,横屏 1v3 语音连麦,支持自定义布局模板。
使用指引:请参考 PC 推流助手开播 完成功能接入,在主播开播时将对应的 liveId 替换为服务端生成 RoomId
// 在主播开播 handleStartLive 时将对应的 liveId 替换为服务端生成 RoomId
const handleStartLive = async () => {
await createLive({
liveId: 'your_server_room_id', // 替换为服务端生成的 RoomId
});
};

OBS Studio 开播


适用场景:已有成熟 OBS 插件体系或导播流程的专业团队。
使用指引:请参考 OBS Studio 开播使用文档,获取 OBS 推流需要的服务器推流码信息,并打开 OBS 工具 配置直播服务后开始直播。


步骤 3:选择观看方式

LiveKit 覆盖全平台观看端接入,观众获取到服务端配置的 RoomId 后,通过以下方式进入直播间:

Web / H5 网页观看


适用场景:社交分享、引流裂变。适用于网页嵌入,用户无需安装 App,点击链接即可“零门槛”观看。
核心优势:跨平台覆盖率高,支持标准浏览器拉流与基础文字互动。
使用指引:请参考侧边目录 观看方式 对应平台的观众观看文档完成功能接入。以 Web Vue3 移动端浏览器 为例在使用 Web UI 组件 接入观众观看页面时,将 liveId 替换为服务端生成的 RoomId 即可。
const liveId = 'your_server_room_id' // 将 liveId 替换为服务端生成的 RoomId

直播监播观看


适用场景:平台合规监管。管理员对多路直播间进行同屏监控、内容审核及违规处理。
核心优势
多路同屏:支持同时监控多个直播间画面,实时查看各房间在线人数、打赏金额等数据。
强力管控:集成后台“一键关播”与“用户封禁”功能。
使用指引:参考直播管理部署指引部署直播管理系统,管理员登录后台后通过“直播间列表”进入指定房间的“监控详情页”。

步骤 4:服务端解散房间 (结束直播)

当直播结束或触发业务违规管控时,业务后台可调用 解散房间 API 强制解散房间。
实现效果:调用后,房间内的所有用户(主播与观众)将收到解散通知并被强制踢出房间,云端资源随之释放。
适用场景
主播异常掉线后的后台自动清理。
运营发现直播违规时的即时封禁。
付费直播时长到期后的系统强制结束。
核心参数:
字段
类型
属性
说明
RoomId
String
必填
需要解散的直播间 ID。

常见问题

服务端创建房间后,主播未进房推流,观众能否提前进入直播间?

支持加入:服务端成功创建房间后,观众即可通过 joinLive 加入房间。
观看体验:由于主播尚未推流,观众进入后将看不到音视频画面,通常表现为黑屏或占位图。
优化建议:为避免观众进入“黑屏房间”,建议在服务端创建房间时将 IsPublicVisible 设为 false(隐藏直播间),待主播正式推流后再通过更新房间信息接口修改为 true(公开可见)。

通过服务端接口创建房间是开播的必经步骤吗?

非强制要求:LiveKit 支持两种开播模式。
自主开播:主播端可不经过服务端接口,直接在 App 调用接口创建并进入房间。
业务预设:通过服务端接口创建房间,适用于付费直播、预约直播等需要由后台统一分配房间 ID、预设布局模板的商业场景。

主播端进入已创建的房间时,使用 startLive 和 joinLive 有什么区别?

推荐主播在任何场景下都调用 startLive
角色一致:在服务端已创建房间的前提下,主播调用 startLivejoinLive 进入,都会被识别为主播角色并具备推流能力。
集成方案行为差异
UI 组件集成:主播调用 startLivejoinLive 后,SDK 会根据其主播身份自动执行“上麦、打开摄像头、打开麦克风”的一键开播动作。
无 UI 集成(Core SDK):主播调用 startLivejoinLive 后仅会自动完成上麦,媒体轨道的开启(摄像头/麦克风)需由开发者根据业务逻辑手动触发。