跳转到内容

面向对象的 SDK

安装

Terminal window
yarn add @bililive/rec-sdk@v2-alpha axios
npm i @bililive/rec-sdk@v2-alpha axios

使用

import { BililiveRec } from "@bililive/rec-sdk"
// BililiveRec 是对“录播姬实例”的抽象,你可以创建复数个 BililiveRec 来管理不同的录播姬实例
const bRecInstance = new BililiveRec({ httpUrl: "http://localhost:1453" });
const bRecInstance2 = new BililiveRec({ httpUrl: "http://localhost:1454" });
// 你可以调用 setConfig 来操作实例设置
await bRecInstance.setConfig({ ... })
// Room 是对“直播间”的抽象
const rooms = await bRecInstance.listRooms();
const room = await bRecInstance.getRoomByRoomId(8760033);
await room.start()
await room.split()
await room.stop()
// 本 SDK 实现了一个特殊的方法,使得你可以把一个实例上的直播间迁移到另一个实例,并在迁移成功后修改 room 实例的关联关系
await room.transferTo(bRecInstance2);
// 如果你在运行大规模录制的集群,在需要迁移/升级的时候,可以找出所有没开播的直播间,用上面的方法把他们迁移到别的录播姬实例上,持续轮询,直到所有直播间都转移成功,这样可以避免丢失录播内容

如果你需要获取存粹的 API,可以用下面的方法获取 API 实例

const api = bRecInstance.ctx.api;
await api.removeRoomByRoomId(10101);

如果只使用 API,不需要上层的抽象,也可以绕过 BililiveRec 直接构造 API 实例

具体参考纯 API 封装

说明

BililiveRec

Method说明
defaultConfig获取软件默认设置
getConfig获取全局设置
setConfig设置全局设置
listRooms列出所有直播间
refreshRooms刷新直播间缓存
addRoom添加直播间
fetchRoom获取指定ID的房间
version读取软件版本信息
generateFilename根据传入参数生成录播文件名
getFile获取录播目录文件信息

注意:所有接口返回的 “room” 都是下方的 Room 类

Room

Method说明
remove删除直播间
refresh刷新本直播间所有信息
refreshRecordingStats刷新直播间录制统计信息
refreshIoStats刷新直播间 IO 统计信息
getConfig读取直播间设置
setConfig修改直播间设置
start开始录制
stop停止录制
split手动分段
transferTo将本直播间转移到另一个实例

Room.transferTo

async transferTo(target: BililiveRec, newConfig?: Partial<SetRoomConfig>): Promise<void>
// 将本直播间转移到另一个实例,这个过程会保留原来的配置,你也可以提供部分配置来覆盖原配置中的对应字段