即时通信 IM 主播开播(RESTful API)

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

相关产品
即时通信 IM 产品页,含版本规格、价格与购买入口。

一、适用场景

通过 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,仅设置从服务端获取的 roomIdlet liveInfo = LiveInfo()liveInfo.liveID = "your_server_room_id" // 填入从服务端获取的 RoomIdpublic 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 替换为服务端生成 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:服务端解散房间 (结束直播)

当直播结束或触发业务违规管控时,业务后台可调用 解散房间 API 强制解散房间。

·实现效果:调用后,房间内的所有用户(主播与观众)将收到解散通知并被强制踢出房间,云端资源随之释放。

·适用场景:

·主播异常掉线后的后台自动清理。

·运营发现直播违规时的即时封禁。

·付费直播时长到期后的系统强制结束。

·核心参数:

字段 类型 属性 说明
RoomId String 必填 需要解散的直播间 ID。

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

·支持加入:服务端成功创建房间后,观众即可通过 joinLive 加入房间。

·观看体验:由于主播尚未推流,观众进入后将看不到音视频画面,通常表现为黑屏或占位图。

·优化建议:为避免观众进入“黑屏房间”,建议在服务端创建房间时将 IsPublicVisible 设为 false(隐藏直播间),待主播正式推流后再通过更新房间信息接口修改为 true(公开可见)。

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

非强制要求:LiveKit 支持两种开播模式。

·自主开播:主播端可不经过服务端接口,直接在 App 调用接口创建并进入房间。

·业务预设:通过服务端接口创建房间,适用于付费直播、预约直播等需要由后台统一分配房间 ID、预设布局模板的商业场景。

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

推荐主播在任何场景下都调用 startLive。

·角色一致:在服务端已创建房间的前提下,主播调用 startLive 或 joinLive 进入,都会被识别为主播角色并具备推流能力。

·集成方案行为差异:

·UI 组件集成:主播调用 startLive 或 joinLive 后,SDK 会根据其主播身份自动执行“上麦、打开摄像头、打开麦克风”的一键开播动作。

·无 UI 集成(Core SDK):主播调用 startLive 或 joinLive 后仅会自动完成上麦,媒体轨道的开启(摄像头/麦克风)需由开发者根据业务逻辑手动触发。

赞 (0)
上一篇 4天前
下一篇 4天前