API参考

互动直播AppServer提供了登录服务和直播间管理服务等后台服务,通过与AUI Kits低代码集成工具互动直播场景SDK搭配使用可以快速实现互动直播应用,助力业务创新快速上线。本文介绍互动直播AppServer的API说明。

AppServer的作用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。

相关文档

接口概览

API

是否鉴权

是否必须

描述

/api/v1/live/login

登录,登录成功会返回token标识,只有带有该标识才能访问授权的接口

/api/v1/live/token

获取IM建连的token

/api/v1/live/create

创建直播间

/api/v1/live/list

分页获取直播间列表

/api/v1/live/get

获取单个直播间

/api/v1/live/start

开始直播

/api/v1/live/stop

结束直播

/api/v1/live/update

更新直播间公告等信息

/api/v1/live/getMeetingInfo

获取连麦信息,仅连麦场景使用

/api/v1/live/updateMeetingInfo

更新连麦信息,仅连麦场景使用

鉴权方式

说明

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实现。

1677485215364-b874ca57-5faf-4c3b-929c-3e66be3aab90

使用说明

  • 请求协议: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

终端设备类型,取值:

  • ios

  • android

  • web

  • pc

返回数据

名称

类型

示例值

描述

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

  • 0:普通直播

  • 1: 连麦直播

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

直播间状态,取值:

  • 0:准备中

  • 1:已开播

  • 2:已停止

mode

Integer

0

直播模式,取值:

  • 0:普通直播

  • 1: 连麦直播

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&timestamp=1677576840&token=95e014264c0b937b449e9a5f3f854c32****",
        "rtc_pull_url": "artc://live.aliyun.com/play/0a7656c4-c01b-424d-9882-a8bf44bd****?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f****&userId=主播userId&timestamp=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"
        }
    }
}

分页获取直播间列表

实现原理

image

重要

只有请求的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

直播间状态,取值:

  • 0:准备中

  • 1:已开播

  • 2:已停止

mode

Integer

0

直播模式,取值:

  • 0:普通直播

  • 1: 连麦直播

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

录制视频的状态

  • 0:准备中

  • 1: 成功

  • 2:失败

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

视频流清晰度定义

  • FD:流畅。

  • LD:标清。

  • SD:高清。

  • HD:超清

  • OD:原画。

  • 2K:2K。

  • 4K:4K。

  • SQ:普通音质。

  • HQ:高音质。

  • AUTO:自适应码率。

vod_info.playlist[].duration

String

67.685

媒体流长度。单位:秒。

vod_info.playlist[].format

String

m3u8

媒体流格式

  • 若媒体文件为视频则取值: mp4m3u8

  • 若是纯音频则取值:mp3

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

媒体流状态,取值:

  • Normal:正常状态,标记的是每种清晰度和格式的一路最新转码完成的流的状态。

  • Invisible:不可见状态,当每种清晰度和格式有多路重复的转码流时,除了最新的一路流会被标记为正常状态,其他流会被标记为不可见状态。

vod_info.playlist[].stream_type

String

媒体流类型。 若媒体流为视频则取值:video,若是纯音频则取值:audio

user_status

JSON

用户的禁言状态

user_status.mute

Boolean

false

用户是否被禁言。取值:

  • true:禁言。

  • 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\&timestamp=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&timestamp=1677590826&token=3833146f33fa914e3b4c25373d780f54fb3a81371fec0884ee062f25d952****",
        "rtc_pull_url": "artc://live.aliyun.com/play/66584c06-347f-47c6-8a18-fa2860c5****?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f****&userId=Cedric8&timestamp=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获取单个直播间的响应参数示例。

阿里云首页 智能媒体服务 相关技术圈