开启一场互动直播
可通过以下步骤开启一场互动直播。
1.新建直播
首先,请求新建直播接口,创建直播会话,获取sessionId(直播会话id), 可不传sdRtn参数使用平台内置声网rtc账号信息,接口会返回sessionId、rtcAppId和rtcChannelId等信息.
curl --location --request POST 'https://digitbot.bokecc.com/api/interact/channel/create?version=1.6.0&accountId=xxxxxx&hash=xxxxxxx&time=xxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
"videoWidth": 720, // 输出视频宽
"videoHeight": 1080, // 输出视频高
"digitalRole": { // 互动数字人信息
"id": "xxxxxxx", // 互动数字人id
"width": 410, // 互动数字人宽
"height": 836, // 互动数字人高
"x": 155, // 互动数字人x坐标
"y": 244 // 互动数字人y坐标
},
"backgroundColor": "#4187ed", // 背景颜色
"liveStateCallback": "xxxxxxxxxx", // 直播状态回调接口
"ttsConfig": { // tts信息
"id": "xxxxxxx", // 互动数字人ai声音id
"pitch": 0, // 音调
"speed": 1.0, // 语速
"volume": 1.2 // 音量
}}'
2.获取直播初始化结果
如果在步骤1指定liveStateCallback参数,直播初始化结果会自动通过http请求回调到此参数指定接口。如果未指定此参数,可通过轮询方式主动查询直播状态。
以下为查询直播状态请求示例:
curl --location --request GET 'https://digitbot.bokecc.com/api/interact/channel/state?sessionId=xxxxxxx&accountId=xxxxxxxx&version=1.0.0&hash=xxxxxxxx&time=xxxxxxx'
3.开启直播
当获取到直播状态为初始化完成时,可调用“开启直播”接口开启直播。
curl --location --request POST 'https://digitbot.bokecc.com/api/interact/channel/start?accountId=xxxxxx&version=1.0.0&hash=xxxxxx&time=xxxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
"sessionId": "xxxxxxxx"
}'
4.声网rtc拉流播放
声网rtc拉流播放,需要获取声网appId, channelId和token,然后可在页面上对接声网sdk拉流播放。
如果使用客户声网rtc信息,客户可自己生成以上信息。如果使用平台内置声网账号信息,在创建直播时可通过接口返回数据获取到rtcAppId和rtcChannelId, 还需要请求“获取观众rtc token”
接口获取观众rtc token, 示例如下:
curl --location --request POST 'https://digitbot.bokecc.com/api/interact/rtc/audience/token?accountId=xxxxxx&version=1.0.0&hash=xxxxxx&time=xxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
"sessionId": "xxxxxxx",
"rtcChannelId": "xxxxxxxxx" // 声网channelId, 使用平台内置声网账号信息时在创建直播接口返回,否则由用户请求创建直播接口时在sdRtn参数内指定。
}'
5.添加直播接管任务
直播开启后,可调用“直播接管排队”接口添加文本或音频任务,任务处理后将输出对应的音视频数据流。
curl --location --request POST 'https://digitbot.bokecc.com/api/interact/channel/task/queue?sessionId=xxxxxx&accountId=xxxxxxxxx&version=1.0.0&hash=xxxxxxxx&time=xxxxxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
"sessionId": "xxxxxxxxxxxxxxxxx",
"content" : "测试文本"
}'
6.其它
通过前边几个步骤,直播就创建并处理直播中状态了,并根据接管任务输出对应的音视频数据流。除了上边步骤涉及的接口外,还可调用一些其它的接口,
如想要停止直播时调用“关闭直播”接口,想要取消之前发送的接管任务,可调用“直播接管取消”接口(只能取消未处理的任务)等。正常情况下还需要每隔
一段时间调用“直播状态监测”接口保持心跳,否则心跳超过10分钟直播将被动关闭。