API参考
互动直播AppServer提供了登录服务和直播间管理服务等后台服务,通过与AUI Kits低代码集成工具互动直播场景SDK搭配使用可以快速实现互动直播应用,助力业务创新快速上线。本文介绍互动直播AppServer的API说明。
AppServer的作用
集成方基于AUI Kits框架快速搭建诸如互动直播、电商直播等服务时,场景SDK需要对接视频直播(用于普通直播及连麦场景)、视频点播(用于直播录屏,可选)及IM服务(用于互动消息)等产品的能力。AppServer将这上述3个产品的能力进行封装,提供一套标准化的HTTP接口供场景SDK使用,降低了集成方的开发成本。
AppServer属于客户自行部署、维护的范畴。
AppServer除了封装上面3个产品的能力外,还实现了直播间管理服务,包括创建/修改/删除直播间、开始/结束直播等常见功能。
AppServer不直接依赖视频直播提供的接口,而是按照视频直播推拉流协议拼接地址实现推拉流地址获取。同时,AppServer也实现了监听视频直播的推流状态回调,以解决主播端异常退出而直播间状态不对的问题。
目前AppServer仅提供Go版本源码,集成方可在此基础上进行二次开发,以满足业务需求。
AppServer的实现
AppServer通过DB表来管理直播间,表设计如下:
CREATE TABLE `room_infos` (
`id` varchar(256) NOT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`title` varchar(256) DEFAULT NULL,
`anchor` varchar(256) DEFAULT NULL,
`extends` mediumtext,
`status` bigint(20) DEFAULT NULL,
`mode` bigint(20) DEFAULT NULL,
`chat_id` varchar(256) DEFAULT NULL,
`pk_id` varchar(256) DEFAULT NULL,
`notice` varchar(256) DEFAULT NULL,
`meeting_id` varchar(256) DEFAULT NULL,
`cover_url` varchar(256) DEFAULT NULL,
`anchor_id` varchar(256) DEFAULT NULL,
`anchor_nick` varchar(256) DEFAULT NULL,
`vod_id` varchar(256) DEFAULT NULL,
`meeting_info` mediumtext,
`started_at` datetime DEFAULT NULL,
`stopped_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_create_at` (`created_at`)
) ENGINE=InnoDB;
注意事项
使用时需注意跨域问题,该服务有可能给到Web端使用,因此需要设置好cors。
相关文档
AUI Kits低代码集成工具框架文档:什么是AUI Kits低代码集成工具
视频直播文档:什么是视频直播
IM Server文档:直播互动消息简介
视频点播文档:什么是视频点播
AppServer开源地址:开源地址
接口概览
API | 是否鉴权 | 是否必须 | 描述 | ||||
否 | 否 | 登录,登录成功会返回token标识,只有带有该标识才能访问授权的接口 | |||||
是 | 是 | 获取IM建连的token | |||||
是 | 是 | 创建直播间 | |||||
是 | 是 | 分页获取直播间列表 | |||||
是 | 是 | 获取单个直播间 | |||||
是 | 是 | 开始直播 | |||||
是 | 是 | 结束直播 | |||||
是 | 否 | 更新直播间公告等信息 | |||||
是 | 否 | 获取连麦信息,仅连麦场景使用 | |||||
是 | 否 | 更新连麦信息,仅连麦场景使用 |
鉴权方式
Demo中的鉴权实现供参考,客户可自行调整鉴权策略。
需要先调用/login接口获取鉴权的token, 将token放到请求头中,然后再调用其它接口。
详细接口定义
登录
该接口客户可按自身业务需求实现,包括token的生成算法也可以自定义,不过要确保生成及检验token使用相同的算法。
使用说明
请求协议:HTTP/HTTPS
请求Path:/login
是否需要授权:否
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
username | String | 是 | username**** | 用户名 | |||
password | String | 是 | password****** | 密码 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
code | Integer | 200 | 业务响应码,参考HTTP响应码 | ||||
expire | String | 2023-02-28T14:38:06+08:00 | 过期时间,使用UTC时间格式 | ||||
token | String | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9*** | 授权凭证,默认使用jwt生成 |
示例
请求示例
{
"username":"username****",
"password":"password******"
}
正常返回示例
{
"code": 200,
"expire": "2023-02-28T14:38:06+08:00",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2Nzc1NjYyODYsImlkIjoieXl5eSIsIm9yaWdfaWF0IjoxNjc3NDc5ODg2fQ.**********"
}
获取IM 建连的token
实质调用的是IM Server的GetMessageToken接口,可参考获取长连接建连Token实现。

使用说明
请求协议:HTTP/HTTPS
请求Path:/api/v1/live/token
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
user_id | String | 是 | userid****** | 用户UserID,用户自定义,在AppID下是单独唯一的 | |||
device_id | String | 是 | deviceid**** | 终端设备ID,唯一代表一个用户终端设备,用户自定义 | |||
device_type | String | 是 | android | 终端设备类型,取值:
|
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
code | Integer | 200 | 业务响应码,参考HTTP响应码 | ||||
access_token | String | oauth_cloud_key:***-b0YY5Gy6Q | 用于长连接建连的Token | ||||
refresh_token | String | oauth_cloud_key:***-b0YY5Gy6Q | 更新Token,若AccessToken过期,则可以使用RefreshToken再次获取新Token |
示例
请求示例
{
"user_id": "userid******",
"device_id": "deviceid********",
"device_type":"android"
}
正常返回示例
{
"code": 200,
"access_token": "yJlbmRwb2ludHMiOlsid3NzOi8vbWV0YXBhdGguYWxpeXVuY3MuY29tL3dzIl0sImFwcElkIjoiVFkzSTJZWDAiLCJ0b2tlbiI6Im1wLmV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKO************",
"refresh_token": "yJlbmRwb2ludHMiOlsid3NzOi8vbWV0YXBhdGguYWxpeXVuY3MuY29tL3dzIl0sImFwcElkIjoiVFkzSTJZWDAiLCJ0b2tlbiI6Im1wLmV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKO************"
}
创建直播间
实现原理
使用说明
请求协议:HTTP/HTTPS
请求Path:/api/v1/live/create
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
title | String | 是 | title****** | 直播标题 | |||
notice | String | 否 | notice**** | 直播公告 | |||
anchor | String | 是 | anchor****** | 主播UserID | |||
anchor_nick | String | 否 | anchornick****** | 主播昵称 | |||
mode | Integer | 否 | 0 | 直播模式,默认为0
| |||
extends | String | 否 | {"xx":"****"} | 扩展字段,SON格式字符串 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
code | Integer | 200 | 业务响应码,参考HTTP响应码 | ||||
id | String | ee487235-5f9b-4cb3-82ce-45c91c3****** | 直播间ID | ||||
created_at | String | 2023-02-27T17:34:00.592750182+08:00 | 创建时间 | ||||
updated_at | String | 2023-02-27T17:34:00.592750182+08:00 | 修改时间 | ||||
title | String | title**** | 直播标题 | ||||
notice | String | notice**** | 直播公告 | ||||
cover_url | String | 封面图。预留字段 | |||||
anchor_id | String | anchor_id**** | 主播UserID | ||||
anchor_nick | String | anchor_nick**** | 主播昵称 | ||||
extends | String | {"xx":"****"} | 扩展字段 | ||||
status | Integer | 0 | 直播间状态,取值:
| ||||
mode | Integer | 0 | 直播模式,取值:
| ||||
chat_id | String | ee487235-5f9b-4cb3-82ce-45c91c3****** | IM群ID | ||||
meeting_id | String | 0a7656c4-c01b-424d-9882-********** | 连麦ID | ||||
meeting_info | String | {"members":[{"user_id":"****","user_nick":"****","user_avatar":"http://****"}]} | JSON字符串。连麦观众信息 | ||||
push_url_info | JSON | 推流地址集合 | |||||
push_url_info.rtmp_url | String | rtmp://push****** | RTMP推流 | ||||
push_url_info.rts_url | String | artc://push****** | RTS推流 | ||||
push_url_info.srt_url | String | srt://push****** | SRT推流 | ||||
pull_url_info | JSON | 拉流地址集合 | |||||
pull_url_info.rtmp_url | String | rtmp://pull****** | RTMP拉流 | ||||
pull_url_info.rts_url | String | artc://pull****** | RTS拉流 | ||||
pull_url_info.hls_url | String | http://pull******.m3u8?****** | HLS拉流 | ||||
pull_url_info.flv_url | String | http://pull******.flv?****** | FLV拉流 | ||||
link_info | JSON | 连麦地址集合 | |||||
link_info.rtc_push_url | String | artc://live.aliyun.com/push/****** | RTC推流地址 | ||||
link_info.rtc_pull_url | String | artc://live.aliyun.com/play/****** | RTC拉流地址 | ||||
link_info.cdn_pull_info | JSON | 普通观众的拉流地址集合 | |||||
link_info.cdn_pull_info.rtmp_url | String | rtmp://pull****** | RTMP拉流 | ||||
link_info.cdn_pull_info.rts_url | String | artc://pull****** | RTS拉流 | ||||
link_info.cdn_pull_info.hls_url | String | http://pull******.m3u8?****** | HLS拉流 | ||||
link_info.cdn_pull_info.flv_url | String | http://pull******.flv?****** | FLV拉流 |
示例
请求示例
{
"title": "title****",
"notice": "notice****",
"anchor":"主播userId",
"anchor_nick":"主播nick",
"mode":0,
"extends":"{\"xx\":\"****\"}"
}
正常返回示例
{
"id": "ee487235-5f9b-4cb3-82ce-45c91c36****",
"created_at": "2023-02-27T17:34:00.592750182+08:00",
"updated_at": "2023-02-27T17:34:00.592750314+08:00",
"title": "直播标题",
"notice": "23232",
"anchor_id": "主播userId",
"anchor_nick": "",
"extends": "{\"xx\":\"****\"}",
"status": 0,
"mode": 0,
"chat_id": "ee487235-5f9b-4cb3-82ce-45c91c36****",
"meeting_id": "0a7656c4-c01b-424d-9882-a8bf44bd****",
"meeting_info": "",
"push_url_info": {
"rtmp_url": "rtmp://push.example.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=167809x",
"rts_url": "artc://push.example.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=1678095xc",
"srt_url": "srt://push.example.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=167809524x"
},
"pull_url_info": {
"rtmp_url": "rtmp://pull.example.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=167809524x",
"rts_url": "artc://pull.example.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=167809524x",
"flv_url": "http://pull.example.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****.flv?auth_key=167809524x",
"hls_url": "http://pull.example.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****.m3u8?auth_key=167809524x"
},
"link_info": {
"rtc_push_url": "artc://live.aliyun.com/push/0a7656c4-c01b-424d-9882-a8bf44bd****?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f****&userId=主播userId×tamp=1677576840&token=95e014264c0b937b449e9a5f3f854c32****",
"rtc_pull_url": "artc://live.aliyun.com/play/0a7656c4-c01b-424d-9882-a8bf44bd****?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f****&userId=主播userId×tamp=1677576840&token=95e014264c0b937b4****",
"cdn_pull_info": {
"rtmp_url": "rtmp://pull.example.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_0a7656c4-c01b-424d-9882-a8bf44bd****_主播userId_camera?auth_key=167757684x",
"rts_url": "artc://pull.example.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_0a7656c4-c01b-424d-9882-a8bf44bd****_主播userId_camera?auth_key=16775768x",
"flv_url": "http://pull.example.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_0a7656c4-c01b-424d-9882-a8bf44bd****_主播userId_camera.flv?auth_key=167757684x",
"hls_url": "http://pull.example.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_0a7656c4-c01b-424d-9882-a8bf44bd****_主播userId_camera.m3u8?auth_key=167757684x"
}
}
}
分页获取直播间列表
实现原理

ListMessageGroupUserById:通过用户ID查询用户信息
SearchMedia:SearchMedia - 搜索媒体信息
GetPlayInfo:GetPlayInfo - 获取音视频播放地址
只有请求的userId是群主才会返回推流地址。
使用说明
请求协议:HTTP/HTTPS
请求Path:/api/v1/live/list
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
user_id | String | 是 | userid**** | 用户UserID | |||
page_num | Integer | 是 | 1 | 页码,默认值:1 | |||
page_size | Integer | 是 | 10 | 单页显示数量,默认值:10。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
code | Integer | 200 | 业务响应码,参考HTTP响应码 | ||||
id | String | ee487235-5f9b-4cb3-82ce-45c91c3****** | 直播间ID | ||||
created_at | String | 2023-02-27T17:34:00.592750182+08:00 | 创建时间 | ||||
updated_at | String | 2023-02-27T17:34:00.592750182+08:00 | 修改时间 | ||||
started_at | String | 2023-02-27T18:54:37+08:00 | 直播的开始时间 | ||||
stopped_at | String | 2023-02-27T19:25:37+08:00 | 直播的结束时间 | ||||
title | String | title**** | 直播标题 | ||||
notice | String | notice**** | 直播公告 | ||||
cover_url | String | 封面图。预留字段 | |||||
anchor_id | String | anchor_id**** | 主播userID | ||||
anchor_nick | String | anchor_nick**** | 主播昵称 | ||||
extends | String | {"xx":"****"} | 扩展字段 | ||||
status | Integer | 0 | 直播间状态,取值:
| ||||
mode | Integer | 0 | 直播模式,取值:
| ||||
chat_id | String | ee487235-5f9b-4cb3-82ce-45c91c3****** | IM群ID | ||||
meeting_id | String | 0a7656c4-c01b-424d-9882-********** | 连麦ID | ||||
meeting_info | String | {"members":[{"user_id":"****","user_nick":"****","user_avatar":"http://****"}]} | JSON字符串。连麦观众信息 | ||||
metrics | JSON | 统计数据 | |||||
metrics.online_count | Long | 20 | 在线人数 | ||||
metrics.like_count | Long | 0 | 点赞人数 | ||||
metrics.pv | Long | 30 | IM群PV | ||||
metrics.uv | Long | 20 | IM群UV | ||||
vod_info | JSON | 直播录制视频信息 | |||||
vod_info.status | Integer | 1 | 录制视频的状态
| ||||
vod_info.playlist | Array | 录制的视频信息。 | |||||
vod_info.playlist[].bit_rate | String | 858.198 | 媒体流码率 | ||||
vod_info.playlist[].creation_time | String | 2017-06-26T06:38:48Z | 音/视频创建时间。格式为:yyyy-MM-ddTHH:mm:ssZ(UTC时间) | ||||
vod_info.playlist[].definition | String | OD | 视频流清晰度定义
| ||||
vod_info.playlist[].duration | String | 67.685 | 媒体流长度。单位:秒。 | ||||
vod_info.playlist[].format | String | m3u8 | 媒体流格式
| ||||
vod_info.playlist[].fps | String | 90000.0 | 媒体流帧率 | ||||
vod_info.playlist[].height | Long | 720 | 媒体流高度。单位:px。 | ||||
vod_info.playlist[].width | Long | 1280 | 媒体流宽度。单位:px。 | ||||
vod_info.playlist[].play_url | String | https://vod.h5v****/Record/VOD_NO_TRANSCODE/live/b92ed0ce-e29f-4df3-984a-db******.m3u8 | 视频流的播放地址。 | ||||
vod_info.playlist[].size | Long | 3034884 | 媒体流大小。单位:Byte。 | ||||
vod_info.playlist[].status | String | Normal | 媒体流状态,取值:
| ||||
vod_info.playlist[].stream_type | String | 媒体流类型。 若媒体流为视频则取值:video,若是纯音频则取值:audio。 | |||||
user_status | JSON | 用户的禁言状态 | |||||
user_status.mute | Boolean | false | 用户是否被禁言。取值:
| ||||
user_status.mute_source | String | 待定。暂时没有返回 | |||||
link_info | JSON | 连麦地址集合 | |||||
link_info.rtc_push_url | String | artc://live.aliyun.com/push/****** | RTC推流地址 | ||||
link_info.rtc_pull_url | String | artc://live.aliyun.com/play/****** | RTC拉流地址 | ||||
link_info.cdn_pull_info | JSON | 普通观众的拉流地址集合 | |||||
link_info.cdn_pull_info.rtmp_url | String | rtmp://pull****** | RTMP拉流 | ||||
link_info.cdn_pull_info.rts_url | String | artc://pull****** | RTS拉流 | ||||
link_info.cdn_pull_info.hls_url | String | http://pull******.m3u8?****** | HLS拉流 | ||||
link_info.cdn_pull_info.flv_url | String | http://pull******.flv?****** | FLV拉流 |
示例
请求示例
{
"page_size": 10,
"page_num":1,
"user_id": "userid******"
}
正常返回示例
[
{
"id": "c8d619e2-e7ec-445d-b8a1-e1ebf967****",
"created_at": "2023-02-27T20:45:28+08:00",
"updated_at": "2023-02-27T20:45:28+08:00",
"started_at": "2023-02-27T20:52:01+08:00",
"stopped_at": "0001-01-01T00:00:00Z",
"title": "直播标题",
"notice": "直播公告",
"cover_url": "",
"anchor_id": "AUILivePusher",
"anchor_nick": "",
"extends": "",
"status": 1,
"mode": 0,
"chat_id": "c8d619e2-e7ec-445d-b8a1-e1ebf967****",
"meeting_id": "",
"vod_id": "",
"meeting_info": "",
"metrics": {
"online_count": 2,
"like_count": 0,
"pv": 12,
"uv": 2
},
"vod_info": {
"status": 1,
"playlist": [
{
"bit_rate": "858.198",
"creation_time": "2023-02-27T11:28:39Z",
"definition": "OD",
"duration": "67.685",
"format": "m3u8",
"fps": "90000.0",
"height": 720,
"width": 1280,
"play_url": "https://vod.h5example.vip/liveRecord/VOD_NO_TRANSCODE/live/b92ed0ce-e29f-4df3-984a-dbdb314d****/2023-02-27-19-24-38_2023-02-27-19-25-36.m3u8",
"size": 3034884,
"status": "Normal",
"stream_type": "video"
}
]
},
"user_status": {
"mute": false,
"mute_source": null
},
"pull_url_info": {
"rtmp_url": "rtmp://pull.h5example.vip/live/c8d619e2-e7ec-445d-b8a1-e1ebf967****?auth_key=167810****",
"rts_url": "artc://pull.h5example.vip/live/c8d619e2-e7ec-445d-b8a1-e1ebf967****?auth_key=167810****",
"flv_url": "http://pull.h5example.vip/live/c8d619e2-e7ec-445d-b8a1-e1ebf967****.flv?auth_key=167810****",
"hls_url": "http://pull.h5example.vip/live/c8d619e2-e7ec-445d-b8a1-e1ebf967****.m3u8?auth_key=167810****"
}
}
]
获取单个直播间
实现原理:参考/api/v1/live/list实现。
使用说明
请求协议:HTTP/HTTPS
请求Path:/api/v1/live/get
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
id | String | 是 | liveId****** | 直播间ID | |||
user_id | String | 是 | userid**** | UserID |
返回数据
参考/api/v1/live/list。只是将列表换为单个对象
示例
请求示例
{
"id": "675e6783-0bac-4990-b6da-5aa89053******",
"user_id": "Cedric8"
}
正常返回示例
{
"id": "675e6783-0bac-4990-b6da-5aa89053****",
"created_at": "2023-02-14T14:34:14+08:00",
"updated_at": "2023-02-14T14:34:19+08:00",
"started_at": "2023-02-14T14:34:19+08:00",
"stopped_at": "2023-02-14T14:34:26+08:00",
"title": "该喝喝",
"notice": "fgg",
"cover_url": "",
"anchor_id": "Cedric8",
"anchor_nick": "",
"extends": "{\"userNick\":\"Cedric8\",\"userAvatar\":\"https:\/\/img.alicdn.com\/imgextra\/i1\/O1CN01chynzk1uKkiHiQIvE_!!6000000006019-2-tps-80-80.png\"}",
"status": 2,
"mode": 1,
"chat_id": "675e6783-0bac-4990-b6da-5aa89053****",
"meeting_id": "66584c06-347f-47c6-8a18-fa2860c5****",
"vod_id": "",
"meeting_info":"{\"members\":[{\"user_id\":\"Cedric8\",\"user_nick\":\"Cedric8\",\"user_avatar\":\"\",\"camera_opened\":true,\"mic_opened\":true,\"rtc_pull_url\":\"artc://live.aliyun.com/play/66584c06-347f-47c6-8a18-fa2860c563ba?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f5b53\&userId=Cedric8\×tamp=1676442853\&token=079116a1c721ac219814d513190be48fcb324800b0b482467ddd04a178e9bf2c\"}]}",
"metrics": {
"online_count": 0,
"like_count": 0,
"pv": 18,
"uv": 6
},
"vod_info": {
"status": 0
},
"user_status": {
"mute": false,
"mute_source": []
},
"push_url_info": {
"rtmp_url": "rtmp://push.h5example.vip/live/675e6783-0bac-4990-b6da-5aa89053****?auth_key=1678109226-0-0-fed270f2c9d79d3216ba7cfb842b****",
"rts_url": "artc://push.h5example.vip/live/675e6783-0bac-4990-b6da-5aa89053****?auth_key=1678109226-0-0-fed270f2c9d79d3216ba7cfb842b****",
"srt_url": "srt://push.h5example.vip/live/675e6783-0bac-4990-b6da-5aa89053****?auth_key=1678109226-0-0-fed270f2c9d79d3216ba7cfb842b****"
},
"pull_url_info": {
"rtmp_url": "rtmp://pull.h5example.vip/live/675e6783-0bac-4990-b6da-5aa89053****?auth_key=1678109226-0-0-f935f515baa272bb83c5bcc44597****",
"rts_url": "artc://pull.h5example.vip/live/675e6783-0bac-4990-b6da-5aa89053****?auth_key=1678109226-0-0-f935f515baa272bb83c5bcc44597****",
"flv_url": "http://pull.h5example.vip/live/675e6783-0bac-4990-b6da-5aa89053****.flv?auth_key=1678109226-0-0-059cf974a2dc12919f92b3be70a9****",
"hls_url": "http://pull.h5example.vip/live/675e6783-0bac-4990-b6da-5aa89053****.m3u8?auth_key=1678109226-0-0-b31e749bbead2fa86d061c3767e3****",
},
"link_info": {
"rtc_push_url": "artc://live.aliyun.com/push/66584c06-347f-47c6-8a18-fa2860c5****?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f****&userId=Cedric8×tamp=1677590826&token=3833146f33fa914e3b4c25373d780f54fb3a81371fec0884ee062f25d952****",
"rtc_pull_url": "artc://live.aliyun.com/play/66584c06-347f-47c6-8a18-fa2860c5****?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f****&userId=Cedric8×tamp=1677590826&token=3833146f33fa914e3b4c25373d780f54fb3a81371fec0884ee062f25d952****",
"cdn_pull_info": {
"rtmp_url": "rtmp://pull.h5example.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_66584c06-347f-47c6-8a18-fa2860c5****_Cedric8_camera?auth_key=1677590826-0-0-22af27f1cc1c9ea2362d6bb8d49d****",
"rts_url": "artc://pull.h5example.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_66584c06-347f-47c6-8a18-fa2860c5****_Cedric8_camera?auth_key=1677590826-0-0-22af27f1cc1c9ea2362d6bb8d49d****",
"flv_url": "http://pull.h5example.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_66584c06-347f-47c6-8a18-fa2860c5****_Cedric8_camera.flv?auth_key=1677590826-0-0-384a33ab3857a556d576af0f5d75****",
"hls_url": "http://pull.h5example.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_66584c06-347f-47c6-8a18-fa2860c5****_Cedric8_camera.m3u8?auth_key=1677590826-0-0-3ab7aeede3dcd589252c2282428f****"
}
}
}
开始直播
实现原理:修改DB的直播间状态status字段值。注意缓存一致性。
使用说明
请求协议:HTTP/HTTPS
请求Path:/api/v1/live/start
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
user_id | String | 是 | userid****** | 用户UserID,用户自定义,在AppID下是单独唯一的 | |||
id | String | 是 | liveId****** | 直播间ID |
返回数据
参考/api/v1/live/get获取单个直播间的响应参数。
示例
请求示例
{
"id": "675e6783-0bac-4990-b6da-5aa89053******",
"user_id": "userid******"
}
正常返回示例
参考/api/v1/live/get获取单个直播间的响应参数示例。
结束直播
实现原理:修改DB的直播间状态status字段值,注意缓存一致性。
使用说明
请求协议:HTTP/HTTPS
请求Path:/api/v1/live/stop
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
user_id | String | 是 | userid****** | 用户UserID,用户自定义,在AppID下是单独唯一的 | |||
id | String | 是 | liveId****** | 直播间ID |
返回数据
参考/api/v1/live/get获取单个直播间的响应参数。
示例
请求示例
{
"id": "675e6783-0bac-4990-b6da-5aa89053******",
"user_id": "userid******"
}
正常返回示例
参考/api/v1/live/get获取单个直播间的响应参数示例。
更新直播间公告等信息
实现原理:修改DB的直播间信息。
使用说明
请求协议:HTTP/HTTPS
请求Path:/api/v1/live/update
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
user_id | String | 是 | userid****** | 用户UserID,用户自定义,在AppID下是单独唯一的 | |||
id | String | 是 | liveId****** | 直播间ID | |||
title | String | 否 | title**** | 直播标题 |
返回数据
参考/api/v1/live/get获取单个直播间的响应参数。
示例
请求示例
{
"id": "675e6783-0bac-4990-b6da-5aa89053******",
"user_id": "userid****"
"title": "测试更新标题",
"notice":"测试更新直播公告",
"extends":"{}"
}
正常返回示例
参考/api/v1/live/get获取单个直播间的响应参数示例。
获取连麦信息
使用说明
请求协议:HTTP/HTTPS
请求Path:/api/v1/live/getMeetingInfo
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
id | String | 是 | liveId****** | 直播间ID |
返回数据
参考/api/v1/live/get获取单个直播间的响应参数。
示例
请求示例
{
"id": "675e6783-0bac-4990-b6da-5aa89053******"
}
正常返回示例
参考/api/v1/live/get获取单个直播间的响应参数示例。
更新连麦信息
修改在线连麦信息,一般由主播端触发。
使用说明
请求协议:HTTP/HTTPS
请求Path:/api/v1/live/updateMeetingInfo
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
id | String | 是 | liveId****** | 直播间ID | |||
members | Array | 是 | 连麦成员 | ||||
members[].user_id | String | 是 | userid**** | 用户ID | |||
members[].user_nick | String | 是 | usernick**** | 用户昵称 | |||
members[].user_avatar | String | 是 | http://****.jpg | 用户头像 | |||
members[].user_camera_opened | Boolean | 是 | true | 摄像头状态 | |||
members[].mic_opened | Boolean | 是 | true | 麦克风状态 | |||
members[].rtc_pull_url | String | 是 | 连麦拉流地址 |
返回数据
参考/api/v1/live/get获取单个直播间的响应参数。
示例
请求示例
{
"id": "675e6783-0bac-4990-b6da-5aa8905******",
"members":[
{
"user_id":"user_id****",
"user_nick":"user_id****",
"user_avatar":"user_id****",
"user_camera_opened": true,
"mic_opened": true,
"rtc_pull_url":"artc://live.ali****"
}
]
}
正常返回示例
参考/api/v1/live/get获取单个直播间的响应参数示例。