RESTful API 开播方案适用于对直播间有强管控需求的业务。通过由业务后台统一预置房间规则(如 ID、模板及权限),实现“云端控场、多设备开播和观看”。
适用场景
通过 RESTful API 开播,您可以将直播行为与业务逻辑深度绑定,适用于对直播间有强管控需求的场景:
业务场景 | 核心价值 |
付费/预约直播 | 业务后台校验权限后再创建房间,确保直播资源(RoomId)可控分配,防止非法占用。 |
企业级/教育直播 | 由后台统一预设布局模板(如固定宫格布局),确保不同主播、不同终端呈现一致的视觉效果。 |
平台运营管控 | 支持服务端强制解散房间、配置管理员或封禁违规用户,实现直播全生命周期监管。 |
开通服务
开通服务:请参考 开通服务,获取
SDKAppID。配置应用管理员账号:在控制台 配置管理员,用于 API 身份鉴权。
步骤 1:服务端创建房间
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,仅设置从服务端获取的 roomIdlet liveInfo = LiveInfo()liveInfo.liveID = "your_server_room_id" // 填入从服务端获取的 RoomIdpublic init(liveInfo: LiveInfo, coreView: LiveCoreView? = nil) {self.liveInfo = liveInfoif 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 替换为服务端生成 RoomIdconst handleStartLive = async () => {// 直播间await createLive({liveId: 'your_server_room_id', // 替换为服务端生成的 RoomId});};
PC 推流助手开播

适用场景:游戏直播、大型赛事、企业年会。需要高清画质与复杂的本地媒体源混流。
核心优势:
视频能力:支持最高 2K/60fps 推流,具备更强的本地视频文件(MP4/MKV)混流能力。
音频特效:内置 13 种变声、11 种混响及背景音乐控制,适合专业声卡环境。
连麦布局:支持竖屏九宫格/浮窗,横屏 1v3 语音连麦,支持自定义布局模板。
使用指引:请参考 PC 推流助手开播 完成功能接入,在主播开播时将对应的
liveId 替换为服务端生成 RoomId:// 在主播开播 handleStartLive 时将对应的 liveId 替换为服务端生成 RoomIdconst 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:服务端解散房间 (结束直播)
实现效果:调用后,房间内的所有用户(主播与观众)将收到解散通知并被强制踢出房间,云端资源随之释放。
适用场景:
主播异常掉线后的后台自动清理。
运营发现直播违规时的即时封禁。
付费直播时长到期后的系统强制结束。
核心参数:
字段 | 类型 | 属性 | 说明 |
RoomId | String | 必填 | 需要解散的直播间 ID。 |
常见问题
服务端创建房间后,主播未进房推流,观众能否提前进入直播间?
支持加入:服务端成功创建房间后,观众即可通过
joinLive 加入房间。观看体验:由于主播尚未推流,观众进入后将看不到音视频画面,通常表现为黑屏或占位图。
优化建议:为避免观众进入“黑屏房间”,建议在服务端创建房间时将
IsPublicVisible 设为 false(隐藏直播间),待主播正式推流后再通过更新房间信息接口修改为 true(公开可见)。通过服务端接口创建房间是开播的必经步骤吗?
非强制要求:LiveKit 支持两种开播模式。
自主开播:主播端可不经过服务端接口,直接在 App 调用接口创建并进入房间。
业务预设:通过服务端接口创建房间,适用于付费直播、预约直播等需要由后台统一分配房间 ID、预设布局模板的商业场景。
主播端进入已创建的房间时,使用 startLive 和 joinLive 有什么区别?
推荐主播在任何场景下都调用
startLive。角色一致:在服务端已创建房间的前提下,主播调用
startLive 或 joinLive 进入,都会被识别为主播角色并具备推流能力。集成方案行为差异:
UI 组件集成:主播调用
startLive 或 joinLive 后,SDK 会根据其主播身份自动执行“上麦、打开摄像头、打开麦克风”的一键开播动作。无 UI 集成(Core SDK):主播调用
startLive 或 joinLive 后仅会自动完成上麦,媒体轨道的开启(摄像头/麦克风)需由开发者根据业务逻辑手动触发。



