AUI Kits AppServer for interactive streaming provides backend features such as logon management and live channel management. You can integrate AUI Kits AppServer for interactive streaming and AUI Kits SDK for interactive streaming to accelerate the development and launch of an interactive streaming application.
Workflow of AppServer
To establish services such as interactive streaming and e-commerce live streaming based on the AUI Kits framework, the scenario-based SDKs need to be integrated with ApsaraVideo Live for regular live streams and co-streaming, and the interactive messaging (IM) service. You can also integrate the SDKs with ApsaraVideo VOD (VOD) for live stream recording based on your business requirements. AppServer encapsulates the capabilities of the preceding services and provides a set of standardized API operations over HTTP for scenario-based SDKs. This reduces the development costs.
You need to deploy and maintain AppServer by yourself.
In addition to the preceding services, AppServer also provides the management service for live channels. For example, you can create or delete a live channel, or modify its information. You can also start or end a live stream.
AppServer does not directly rely on the operations provided by ApsaraVideo Live. You must construct ingest and streaming URLs based on the concatenation rules over the protocols supported by ApsaraVideo Live. AppServer also allows you to configure the callback for the stream ingest status. This way, you can troubleshoot issues related to live channel status caused by unexpected exits on the streamer side.
The IM service provides the old and new IM systems. The new IM system provides more powerful and stable IM service capabilities. The old IM system will be gradually replaced with the new one and then discontinued. If you use AppServer for the first time, we recommend that you directly integrate AppServer with the new IM system. If you have integrated AppServer with the old IM system, a migration solution will be provided to help you migrate data to the new IM system in the future.
Implementation of AppServer
AppServer uses database tables to manage live channels. The following code provides an example on how to create a database table:
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 DEFAULT NULL,
`mode` bigint 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 DEFAULT CHARSET=utf8mb4;Usage notes
This service may be used by web clients. To prevent cross-domain access issues, configure cross-origin resource sharing (CORS) rules for the service.
References
For more information about ApsaraVideo Live, see What is ApsaraVideo Live
For more information about the IM server, see Interactive messaging overview.
For more information about VOD, see What is ApsaraVideo VOD?
For more information about the source code of the AppServer, see Java.
API operations of AppServer
API operations
API operation | Authentication required | Required | Description | ||||
/api/v1/live/login | No | No | Initiates a logon request. If the logon is successful, a token is returned. This token is required to access the authorized API operations. | ||||
/api/v1/live/token | Yes | Yes | Obtains the token that is used to create a connection to the IM server. | ||||
/api/v1/live/create | Yes | Yes | Creates a live channel. | ||||
/api/v1/live/list | Yes | Yes | Queries live channels by page. | ||||
/api/v1/live/get | Yes | Yes | Queries a single live channel. | ||||
/api/v1/live/start | Yes | Yes | Starts a live stream. | ||||
/api/v1/live/stop | Yes | Yes | Ends a live stream. | ||||
/api/v1/live/update | Yes | No | Updates information such as live channel announcements. | ||||
/api/v1/live/getMeetingInfo | Yes | No This operation is available only to co-streaming scenarios. | Queries the co-streaming information. | ||||
/api/v1/live/updateMeetingInfo | Yes | No This operation is available only to co-streaming scenarios. | Updates the co-streaming information. | ||||
/api/v2/live/token | Yes | Yes | Obtains the token that is used to create a connection to the IM server. This operation is compatible with the old and new IM systems. | ||||
/api/v2/live/create | Yes | Yes | Creates a single live channel. This operation is compatible with the old and new IM systems. | ||||
Authentication method
The authentication method provided by the demo is only for reference. You can modify the authentication policy based on your business requirements.
You must call the /login operation to obtain an authentication token and specify the token in the request header before you call other operations.
Operation definitions
/api/v1/live/login
You can implement this operation based on your business requirements. For example, you can specify the algorithm that is used to generate the token. In this case, make sure that the token is generated and verified by using the same algorithm.
Usage notes
Request protocol: HTTP or HTTPS
Request path: /login
Authorization required: No
Request method: POST
Request Content-Type: application/json
Request parameters
Parameter | Type | Required | Example | Description | |||
username | String | Yes | usernamexxx | The username. | |||
password | String | Yes | passwordxxxx | The password. | |||
Response parameters
Parameter | Type | Example | Description | ||||
code | Integer | 200 | The HTTP status code that is returned. | ||||
expire | String | 2023-02-28T14:38:06+08:00 | The time when the token expires. The time is displayed in UTC. | ||||
token | String | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9*** | The authorization token. By default, the token is generated by using a JSON Web Token (JWT) application. | ||||
Examples
Sample requests
{
"username":"usernamexxx",
"password":"passwordxxxx"
}Sample success responses
{
"code": 200,
"expire": "2023-02-28T14:38:06+08:00",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2Nzc1NjYyODYsImlkIjoieXl5eSIsIm9yaWdfaWF0IjoxNjc3NDc5ODg2fQ.xxxxxx"
}/api/v1/live/token
In essence, the GetMessageToken operation of the IM server is called to create the connection. For more information, see GetMessageToken.
Usage notes
Request protocol: HTTP or HTTPS
Request path: /api/v1/live/token
Authorization required: Yes
Request method: POST
Request Content-Type: JSON
Request parameters
Parameter | Type | Required | Example | Description | |||
user_id | String | Yes | useridxxxx | The user ID. Each user has a unique ID in the application. | |||
device_id | String | Yes | deviceidxxx | The device ID. Each device has a unique ID. | |||
device_type | String | Yes | The type of the device. Valid values:
| ||||
Response parameters
Parameter | Type | Example | Description | ||||
code | Integer | 200 | The HTTP status code that is returned. | ||||
access_token | String | oauth_cloud_key:***-b0YY5Gy6Q | The token that is used to create a persistent connection. | ||||
refresh_token | String | oauth_cloud_key:***-b0YY5Gy6Q | The refresh token that is used to obtain a new token if the returned token expires. | ||||
Examples
Sample requests
{
"user_id": "useridxxxx",
"device_id": "deviceidxxxxx",
"device_type":"android"
}Sample success responses
{
"code": 200,
"access_token": "yJlbmRwb2ludHMiOlsid3NzOi8vbWV0YXBhdGguYWxpeXVuY3MuY29tL3dzIl0sImFwcElkIjoiVFkzSTJZWDAiLCJ0b2tlbiI6Im1wLmV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOxxxxxxx",
"refresh_token": "yJlbmRwb2ludHMiOlsid3NzOi8vbWV0YXBhdGguYWxpeXVuY3MuY29tL3dzIl0sImFwcElkIjoiVFkzSTJZWDAiLCJ0b2tlbiI6Im1wLmV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOxxxxxxx"
}/api/v1/live/create
Implementation
For more information about how to create an IM group, see CreateMessageGroup.
For more information about the generation rules of ingest and streaming URLs for regular live streams, see Generate ingest and streaming URLs.
For more information about the generation rules of ingest and streaming URLs for co-streaming, see Co-streaming URL rules.
Usage notes
Request protocol: HTTP or HTTPS
Request path: /api/v1/live/create
Authorization required: Yes
Request method: POST
Request Content-Type: JSON
Request parameters
Parameter | Type | Required | Example | Description | |||
title | String | Yes | titlexxxx | The title of the live channel. | |||
notice | String | No | noticexxx | The announcement of the live channel. | |||
anchor | String | Yes | anchorxxxx | The user ID of the streamer. | |||
anchor_nick | String | No | anchornickxxxx | The nickname of the streamer. | |||
mode | Integer | No | 0 | The live stream mode. Default value: 0. Valid values:
| |||
extends | String | No | {"xx":"xxx"} | The extension field. The value is a JSON string. | |||
Response parameters
Parameter | Type | Example | Description | ||||
code | Integer | 200 | The HTTP status code that is returned. | ||||
id | String | ee487235-5f9b-4cb3-82ce-45c91c3xxxx | The ID of the live channel. | ||||
created_at | String | 2023-02-27T17:34:00.592750182+08:00 | The time when the live channel was created. | ||||
updated_at | String | 2023-02-27T17:34:00.592750182+08:00 | The time when the live channel information was modified. | ||||
title | String | titlexxx | The title of the live channel. | ||||
notice | String | noticexxx | The announcement of the live channel. | ||||
cover_url | String | The thumbnail of the live channel. This is a reserved field. | |||||
anchor_id | String | anchor_idxxx | The user ID of the streamer. | ||||
anchor_nick | String | anchor_nickxxx | The nickname of the streamer. | ||||
extends | String | {"xx":"xxx"} | The extended field. | ||||
status | Integer | 0 | The status of the live channel. Valid values: 0: The live stream is being prepared. 1: The live stream has started. 2: The live stream has ended. | ||||
mode | Integer | 0 | The live stream mode. Valid values:
| ||||
chat_id | String | ee487235-5f9b-4cb3-82ce-45c91c3xxxx | The ID of the IM group. | ||||
meeting_id | String | 0a7656c4-c01b-424d-9882-xxxxxx | The co-streaming ID. | ||||
meeting_info | String | {"members":[{"user_id":"xxx","user_nick":"xxx","user_avatar":"http://xxx"}]} | The information about the viewer that is returned in a JSON string. | ||||
push_url_info | JSON | The stream ingest URLs. | |||||
push_url_info.rtmp_url | String | rtmp://pushxxxx | The URL of stream ingest over Real-Time Messaging Protocol (RTMP). | ||||
push_url_info.rts_url | String | artc://pushxxxx | The URL of stream ingest over real-time streaming (RTS). | ||||
push_url_info.srt_url | String | srt://pushxxxx | The URL of stream ingest over Secure Reliable Transport (SRT). | ||||
pull_url_info | JSON | The streaming URLs. | |||||
pull_url_info.rtmp_url | String | rtmp://pullxxxx | The URL of stream pulling over RTMP. | ||||
pull_url_info.rts_url | String | artc://pullxxxx | The URL of stream pulling over RTS. | ||||
pull_url_info.hls_url | String | http://pullxxxx.m3u8?xxxx | The URL of stream pulling over HTTP Live Streaming (HLS). | ||||
pull_url_info.flv_url | String | http://pullxxxx.flv?xxxx | The URL of stream pulling over Flash Video (FLV). | ||||
link_info | JSON | The co-streaming URLs. | |||||
link_info.rtc_push_url | String | artc://live.aliyun.com/push/xxxx | The URL of stream ingest over Real-Time Communication (RTC). | ||||
link_info.rtc_pull_url | String | artc://live.aliyun.com/play/xxxx | The URL of stream pulling over RTC. | ||||
link_info.cdn_pull_info | JSON | The streaming URLs of the viewer. | |||||
link_info.cdn_pull_info.rtmp_url | String | rtmp://pullxxxx | The URL of stream pulling over RTMP. | ||||
link_info.cdn_pull_info.rts_url | String | artc://pullxxxx | The URL of stream pulling over RTS. | ||||
link_info.cdn_pull_info.hls_url | String | http://pullxxxx.m3u8?xxxx | The URL of stream pulling over HLS. | ||||
link_info.cdn_pull_info.flv_url | String | http://pullxxxx.flv?xxxx | The URL of stream pulling over FLV. | ||||
Examples
Sample requests
{
"title": "titlexxx",
"notice": "noticexxx",
"anchor":"Streamer user ID",
"anchor_nick":"Streamer nickname",
"mode":0,
"extends":"{\"xx\":\"xxx\"}"
}Sample success responses
{
"id": "ee487235-5f9b-4cb3-82ce-45c91c365d06",
"created_at": "2023-02-27T17:34:00.592750182+08:00",
"updated_at": "2023-02-27T17:34:00.592750314+08:00",
"title": "Title of the live channel",
"notice": "23232",
"anchor_id": "Streamer user ID",
"anchor_nick": "",
"extends": "{\"xx\":\"xxx\"}",
"status": 0,
"mode": 0,
"chat_id": "ee487235-5f9b-4cb3-82ce-45c91c365d06",
"meeting_id": "0a7656c4-c01b-424d-9882-a8bf44bd3a4b",
"meeting_info": "",
"push_url_info": {
"rtmp_url": "rtmp://push.h5video.vip/live/ee487235-5f9b-4cb3-82ce-45c91c365d06?auth_key=167809x",
"rts_url": "artc://push.h5video.vip/live/ee487235-5f9b-4cb3-82ce-45c91c365d06?auth_key=1678095xc",
"srt_url": "srt://push.h5video.vip/live/ee487235-5f9b-4cb3-82ce-45c91c365d06?auth_key=167809524x"
},
"pull_url_info": {
"rtmp_url": "rtmp://pull.h5video.vip/live/ee487235-5f9b-4cb3-82ce-45c91c365d06?auth_key=167809524x",
"rts_url": "artc://pull.h5video.vip/live/ee487235-5f9b-4cb3-82ce-45c91c365d06?auth_key=167809524x",
"flv_url": "http://pull.h5video.vip/live/ee487235-5f9b-4cb3-82ce-45c91c365d06.flv?auth_key=167809524x",
"hls_url": "http://pull.h5video.vip/live/ee487235-5f9b-4cb3-82ce-45c91c365d06.m3u8?auth_key=167809524x"
},
"link_info": {
"rtc_push_url": "artc://live.aliyun.com/push/0a7656c4-c01b-424d-9882-a8bf44bd3a4b?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f5b53&userId=Streamer user ID×tamp=1677576840&token=95e014264c0b937b449e9a5f3f854c32fd4x",
"rtc_pull_url": "artc://live.aliyun.com/play/0a7656c4-c01b-424d-9882-a8bf44bd3a4b?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f5b53&userId=Streamer user ID×tamp=1677576840&token=95e014264c0b937b449ex",
"cdn_pull_info": {
"rtmp_url": "rtmp://pull.h5video.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_0a7656c4-c01b-424d-9882-a8bf44bd3a4b_Streamer user ID_camera?auth_key=167757684x",
"rts_url": "artc://pull.h5video.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_0a7656c4-c01b-424d-9882-a8bf44bd3a4b_Streamer user ID_camera?auth_key=16775768x",
"flv_url": "http://pull.h5video.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_0a7656c4-c01b-424d-9882-a8bf44bd3a4b_Streamer user ID_camera.flv?auth_key=167757684x",
"hls_url": "http://pull.h5video.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_0a7656c4-c01b-424d-9882-a8bf44bd3a4b_Streamer user ID_camera.m3u8?auth_key=167757684x"
}
}
}/api/v1/live/list
Implementation
The documentation of the GetGroupStatistics operation is coming soon.
For more information about the ListMessageGroupUserById operation, see ListMessageGroupUserById.
For more information about the SearchMedia operation, see SearchMedia.
For more information about the GetPlayInfo operation, see GetPlayInfo.
The streaming URL is returned only if the user ID of the IM group owner is specified in the request.
Usage notes
Request protocol: HTTP or HTTPS
Request path: /api/v1/live/list
Authorization required: Yes
Request method: POST
Request Content-Type: JSON
Request parameters
Parameter | Type | Required | Example | Description | |||
user_id | String | Yes | useridxxx | The user ID. | |||
page_num | Integer | Yes | 1 | The page number. Pages start from page 1. Default value: 1. | |||
page_size | Integer | Yes | 10 | The number of entries per page. Default value: 10. | |||
im_server | JSON array | Yes | ["aliyun_old","aliyun_new"] | Specifies the IM services to be used. You can specify multiple services. Default value: aliyun_old. Valid values:
| |||
Response parameters
Parameter | Type | Example | Description | ||||
code | Integer | 200 | The HTTP status code that is returned. | ||||
id | String | ee487235-5f9b-4cb3-82ce-45c91c3xxxx | The ID of the live channel. | ||||
created_at | String | 2023-02-27T17:34:00.592750182+08:00 | The time when the live channel was created. | ||||
updated_at | String | 2023-02-27T17:34:00.592750182+08:00 | The time when the live channel information was modified. | ||||
started_at | String | 2023-02-27T18:54:37+08:00 | The time when the live stream started. | ||||
stopped_at | String | 2023-02-27T19:25:37+08:00 | The time when the live stream ended. | ||||
title | String | titlexxx | The title of the live channel. | ||||
notice | String | noticexxx | The announcement of the live channel. | ||||
cover_url | String | The thumbnail of the live channel. This is a reserved field. | |||||
anchor_id | String | anchor_idxxx | The user ID of the streamer. | ||||
anchor_nick | String | anchor_nickxxx | The nickname of the streamer. | ||||
extends | String | {"xx":"xxx"} | The extended field. | ||||
status | Integer | 0 | The status of the live channel. Valid values: 0: The live stream is being prepared. 1: The live stream has started. 2: The live stream has ended. | ||||
mode | Integer | 0 | The live stream mode. Valid values:
| ||||
chat_id | String | ee487235-5f9b-4cb3-82ce-45c91c3xxxx | The ID of the IM group. | ||||
meeting_id | String | 0a7656c4-c01b-424d-9882-xxxxxx | The co-streaming ID. | ||||
meeting_info | String | {"members":[{"user_id":"xxx","user_nick":"xxx","user_avatar":"http://xxx"}]} | The information about the viewer that is returned in a JSON string. | ||||
metrics | JSON | The group statistics. | |||||
metrics.online_count | Long | 20 | The number of online users. | ||||
metrics.like_count | Long | 0 | The number of likes. | ||||
metrics.pv | Long | 30 | The page views (PVs) of the IM group. | ||||
metrics.uv | Long | 20 | The unique visitors (UVs) of the IM group. | ||||
vod_info | JSON | The information about the recording. | |||||
vod_info.status | Integer | 1 | The status of the recording. Valid values:
| ||||
vod_info.playlist | Array | The information about the recorded live stream. | |||||
vod_info.playlist[].bit_rate | String | 858.198 | The bitrate of the media stream. | ||||
vod_info.playlist[].creation_time | String | 2017-06-26T06:38:48Z | The time when the audio or video file was created. The time is in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC. | ||||
vod_info.playlist[].definition | String | OD | The definition of the video stream.
| ||||
vod_info.playlist[].duration | String | 67.685 | The duration of the media stream. Unit: seconds. | ||||
vod_info.playlist[].format | String | m3u8 | The format of the media stream.
| ||||
vod_info.playlist[].fps | String | 90000.0 | The frame rate of the media stream. | ||||
vod_info.playlist[].height | Long | 720 | The height of the media stream. Unit: pixels. | ||||
vod_info.playlist[].width | Long | 1280 | The width of the media stream. Unit: pixels. | ||||
vod_info.playlist[].play_url | String | https://vod.h5vxxx/Record/VOD_NO_TRANSCODE/live/b92ed0ce-e29f-4df3-984a-dbxxxx.m3u8 | The playback URL of the media stream. | ||||
vod_info.playlist[].size | Long | 3034884 | The size of the media stream. Unit: bytes. | ||||
vod_info.playlist[].status | String | Normal | The status of the media stream. Valid values:
| ||||
vod_info.playlist[].stream_type | String | The type of the media stream. If the media stream is a video stream, the value is video. If the media stream is an audio-only stream, the value is audio. | |||||
user_status | JSON | The status of the user. | |||||
user_status.mute | Boolean | false | Indicates whether the user is muted. Valid values:
| ||||
user_status.mute_source | String | The pending parameter. No value is returned. | |||||
link_info | JSON | The co-streaming URLs. | |||||
link_info.rtc_push_url | String | artc://live.aliyun.com/push/xxxx | The URL of stream ingest over RTC. | ||||
link_info.rtc_pull_url | String | artc://live.aliyun.com/play/xxxx | The URL of stream pulling over RTC. | ||||
link_info.cdn_pull_info | JSON | The streaming URLs of the viewer. | |||||
link_info.cdn_pull_info.rtmp_url | String | rtmp://pullxxxx | The URL of stream pulling over RTMP. | ||||
link_info.cdn_pull_info.rts_url | String | artc://pullxxxx | The URL of stream pulling over RTS. | ||||
link_info.cdn_pull_info.hls_url | String | http://pullxxxx.m3u8?xxxx | The URL of stream pulling over HLS. | ||||
link_info.cdn_pull_info.flv_url | String | http://pullxxxx.flv?xxxx | The URL of stream pulling over FLV. | ||||
Examples
Sample requests
{
"page_size": 10,
"page_num":1,
"user_id": "useridxxxx"
"im_server":["aliyun_old","aliyun_new"]
}Sample success responses
[
{
"id": "c8d619e2-e7ec-445d-b8a1-e1ebf967d6c3",
"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": "Title of the live channel",
"notice": "Announcement of the live channel",
"cover_url": "",
"anchor_id": "AUILivePusher",
"anchor_nick": "",
"extends": "",
"status": 1,
"mode": 0,
"chat_id": "c8d619e2-e7ec-445d-b8a1-e1ebf967d6c3",
"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.h5video.vip/liveRecord/VOD_NO_TRANSCODE/live/b92ed0ce-e29f-4df3-984a-dbdb314d7e4e/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.h5video.vip/live/c8d619e2-e7ec-445d-b8a1-e1ebf967d6c3?auth_key=167810730x",
"rts_url": "artc://pull.h5video.vip/live/c8d619e2-e7ec-445d-b8a1-e1ebf967d6c3?auth_key=167810730x",
"flv_url": "http://pull.h5video.vip/live/c8d619e2-e7ec-445d-b8a1-e1ebf967d6c3.flv?auth_key=167810730x",
"hls_url": "http://pull.h5video.vip/live/c8d619e2-e7ec-445d-b8a1-e1ebf967d6c3.m3u8?auth_key=167810730x"
}
}
]/api/v1/live/get
This operation is implemented in the same way as the /api/v1/live/list operation. For more information, see the "/api/v1/live/list" section of this topic.
Usage notes
Request protocol: HTTP or HTTPS
Request path: /api/v1/live/get
Authorization required: Yes
Request method: POST
Request Content-Type: JSON
Request parameters
Parameter | Type | Required | Example | Description | |||
id | String | Yes | liveIdxxxx | The ID of the live channel. | |||
user_id | String | Yes | useridxxx | UserId | |||
im_server | JSON array | Yes | ["aliyun_old","aliyun_new"] | Specifies the IM services to be used. You can specify multiple services. Default value: aliyun_old. Valid values:
| |||
Response parameters
The response parameters of this operation are similar to those of the /api/v1/live/list operation. The difference is that the object of this operation is a single live channel.
Examples
Sample requests
{
"id": "675e6783-0bac-4990-b6da-5aa890535029",
"user_id": "Cedric8"
"im_server":["aliyun_old","aliyun_new"]
}Sample success responses
{
"id": "675e6783-0bac-4990-b6da-5aa890535029",
"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": "Title of the live channel",
"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-5aa890535029",
"meeting_id": "66584c06-347f-47c6-8a18-fa2860c563ba",
"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.h5video.vip/live/675e6783-0bac-4990-b6da-5aa890535029?auth_key=1678109226-0-0-fed270f2c9d79d3216ba7cfb842b811c",
"rts_url": "artc://push.h5video.vip/live/675e6783-0bac-4990-b6da-5aa890535029?auth_key=1678109226-0-0-fed270f2c9d79d3216ba7cfb842b811c",
"srt_url": "srt://push.h5video.vip/live/675e6783-0bac-4990-b6da-5aa890535029?auth_key=1678109226-0-0-fed270f2c9d79d3216ba7cfb842b811c"
},
"pull_url_info": {
"rtmp_url": "rtmp://pull.h5video.vip/live/675e6783-0bac-4990-b6da-5aa890535029?auth_key=1678109226-0-0-f935f515baa272bb83c5bcc44597a3fa",
"rts_url": "artc://pull.h5video.vip/live/675e6783-0bac-4990-b6da-5aa890535029?auth_key=1678109226-0-0-f935f515baa272bb83c5bcc44597a3fa",
"flv_url": "http://pull.h5video.vip/live/675e6783-0bac-4990-b6da-5aa890535029.flv?auth_key=1678109226-0-0-059cf974a2dc12919f92b3be70a99fef",
"hls_url": "http://pull.h5video.vip/live/675e6783-0bac-4990-b6da-5aa890535029.m3u8?auth_key=1678109226-0-0-b31e749bbead2fa86d061c3767e31401",
},
"link_info": {
"rtc_push_url": "artc://live.aliyun.com/push/66584c06-347f-47c6-8a18-fa2860c563ba?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f5b53&userId=Cedric8×tamp=1677590826&token=3833146f33fa914e3b4c25373d780f54fb3a81371fec0884ee062f25d9522566",
"rtc_pull_url": "artc://live.aliyun.com/play/66584c06-347f-47c6-8a18-fa2860c563ba?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f5b53&userId=Cedric8×tamp=1677590826&token=3833146f33fa914e3b4c25373d780f54fb3a81371fec0884ee062f25d9522566",
"cdn_pull_info": {
"rtmp_url": "rtmp://pull.h5video.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_66584c06-347f-47c6-8a18-fa2860c563ba_Cedric8_camera?auth_key=1677590826-0-0-22af27f1cc1c9ea2362d6bb8d49dd077",
"rts_url": "artc://pull.h5video.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_66584c06-347f-47c6-8a18-fa2860c563ba_Cedric8_camera?auth_key=1677590826-0-0-22af27f1cc1c9ea2362d6bb8d49dd077",
"flv_url": "http://pull.h5video.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_66584c06-347f-47c6-8a18-fa2860c563ba_Cedric8_camera.flv?auth_key=1677590826-0-0-384a33ab3857a556d576af0f5d7563e5",
"hls_url": "http://pull.h5video.vip/live/7c61616e-480b-4de6-b3fc-95cef48f5b53_66584c06-347f-47c6-8a18-fa2860c563ba_Cedric8_camera.m3u8?auth_key=1677590826-0-0-3ab7aeede3dcd589252c2282428f1a22"
}
}
}/api/v1/live/start
This operation is implemented by modifying the status of the live channel in databases. Take note of the data consistency between the cache and the database.
Usage notes
Request protocol: HTTP or HTTPS
Request path: /api/v1/live/start
Authorization required: Yes
Request method: POST
Request Content-Type: JSON
Request parameters
Parameter | Type | Required | Example | Description | |||
user_id | String | Yes | useridxxxx | The user ID. Each user has a unique ID in the application. | |||
id | String | Yes | liveIdxxxx | The ID of the live channel. | |||
Response parameters
For more information, see the response parameters described in the "/api/v1/live/get" section of this topic.
Examples
Sample requests
{
"id": "675e6783-0bac-4990-b6da-5aa890535029",
"user_id": "useridxxxx"
}Sample success responses
For more information, see the example provided in the "/api/v1/live/get" section of this topic.
/api/v1/live/stop
This operation is implemented by modifying the status of the live channel in databases. Take note of the data consistency between the cache and the database.
Usage notes
Request protocol: HTTP or HTTPS
Request path: /api/v1/live/stop
Authorization required: Yes
Request method: POST
Request Content-Type: JSON
Request parameters
Parameter | Type | Required | Example | Description | |||
user_id | String | Yes | useridxxxx | The user ID. Each user has a unique ID in the application. | |||
id | String | Yes | liveIdxxxx | The ID of the live channel. | |||
Response parameters
For more information, see the response parameters described in the "/api/v1/live/get" section of this topic.
Examples
Sample requests
{
"id": "675e6783-0bac-4990-b6da-5aa890535029",
"user_id": "useridxxxx"
}Sample success responses
For more information, see the example provided in the "/api/v1/live/get" section of this topic.
/api/v1/live/update
This operation is implemented by modifying information about the live channel in databases.
Usage notes
Request protocol: HTTP or HTTPS
Request path: /api/v1/live/update
Authorization required: Yes
Request method: POST
Request Content-Type: JSON
Request parameters
Parameter | Type | Required | Example | Description | |||
user_id | String | Yes | useridxxxx | The user ID. Each user has a unique ID in the application. | |||
id | String | Yes | liveIdxxxx | The ID of the live channel. | |||
title | String | No | titlexxx | The title of the live channel. | |||
Response parameters
For more information, see the response parameters described in the "/api/v1/live/get" section of this topic.
Examples
Sample requests
{
"id": "675e6783-0bac-4990-b6da-5aa890535029",
"user_id": "useridxxx"
"title": "Test title",
"notice":"Test announcement",
"extends":"{}"
}Sample success responses
For more information, see the example provided in the "/api/v1/live/get" section of this topic.
/api/v1/live/getMeetingInfo
Usage notes
Request protocol: HTTP or HTTPS
Request path: /api/v1/live/getMeetingInfo
Authorization required: Yes
Request method: POST
Request Content-Type: JSON
Request parameters
Parameter | Type | Required | Example | Description | |||
id | String | Yes | liveIdxxxx | The ID of the live channel. | |||
Response parameters
For more information, see the response parameters described in the "/api/v1/live/get" section of this topic.
Examples
Sample requests
{
"id": "675e6783-0bac-4990-b6da-5aa890535029"
}Sample success responses
For more information, see the example provided in the "/api/v1/live/get" section of this topic.
/api/v1/live/updateMeetingInfo
Modifies the co-streaming information. In most cases, this operation is triggered by the streamer.
Usage notes
Request protocol: HTTP or HTTPS
Request path: /api/v1/live/updateMeetingInfo
Authorization required: Yes
Request method: POST
Request Content-Type: JSON
Request parameters
Parameter | Type | Required | Example | Description | |||
id | String | Yes | liveIdxxxx | The ID of the live channel. | |||
members | Array | Yes | The information about co-streamers. | ||||
members[].user_id | String | Yes | useridxxx | The user ID of the co-streamer. | |||
members[].user_nick | String | Yes | usernickxxx | The nickname of the co-streamer. | |||
members[].user_avatar | String | Yes | http://xxx.jpg | The profile picture of the co-streamer. | |||
members[].camera_opened | Boolean | Yes | true | The camera status of the co-streamer. | |||
members[].mic_opened | Boolean | Yes | true | The microphone status of the co-streamer. | |||
members[].rtc_pull_url | String | Yes | The streaming URL of the co-streaming. | ||||
Response parameters
For more information, see the response parameters described in the "/api/v1/live/get" section of this topic.
Examples
Sample requests
{
"id": "675e6783-0bac-4990-b6da-5aa890535029",
"members": [
{
"user_id": "user_idxxx",
"user_nick": "user_idxxx",
"user_avatar": "user_idxxx",
"camera_opened": true,
"mic_opened": true,
"rtc_pull_url": "artc://live.alixxx"
}
]
}Sample success responses
For more information, see the example provided in the "/api/v1/live/get" section of this topic.
/api/v1/live/getLiveJumpUrl
Generates a redirection URL to invoke the live stream assistant for streamers to enter their live channel and start a live stream.
Usage notes
Request path: /api/v1/live/getLiveJumpUrl
Request method: Post
Authorization required: Yes
Request Content-Type: application/json; charset=utf-8
Request parameters
Parameter | Type | Required | Example | Description | |||
user_name | String | No | test*** | The nickname of the user. | |||
user_id | String | Yes | a494caec-***-695ef345db77 | The user ID. | |||
live_id | String | Yes | de1**a0,hu**9 | The ID of the live stream. | |||
Response parameters
Parameter | Type | Example | Description | ||||
code | int | 200 | The HTTP status code that is returned. | ||||
liveJumpUrl | String | auipusher://page/live-room?app_server=http%3A%2F%2Flive-example.live.1569899459811379.cn-hangzhou.fc.devsapp.net&token=fdasdasafdfadasd&user_id=131312414&user_name=%E7%BE%8E%E5%A5%B3%E4%B8%BB%E6%92%AD&live_id=e3141312312321 | The redirection URL that is returned. The URL contains the following parameters:
| ||||
/api/v1/live/verifyAuthToken
Usage notes
Request path: /api/v1/live/verifyAuthToken
Request method: Post
Request Content-Type: application/json; charset=utf-8
Request parameters
Parameter | Type | Required | Example | Description | |||
user_name | String | No | BatchGetOnlineUsers | The nickname of the user. The nickname is encoded in UTF-8. | |||
user_id | String | Yes | a494caec-***-695ef345db77 | The user ID. | |||
live_id | String | Yes | de1**a0 | The ID of the live stream. | |||
app_server | String | Yes | http://xxx | The endpoint. | |||
token | String | Yes | 7da3c10e-ce85-498a-a0ca-03d6e2297955 | The signature verification parameter. | |||
Response parameters
Parameter | Type | Example | Description | ||||
code | int | 200 | The HTTP status code that is returned. | ||||
loginToken | String | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxxxxxxxxxx.jIsjbRRO1B0xV2iVkshcrykz2Lj-6WcloZ9o0HkT3O0 | The logon token, which is used to call the service URL. | ||||
/api/v2/live/token
Usage notes
Request protocol: HTTP or HTTPS
Request path: /api/v2/live/token
Authorization required: Yes
Request method: POST
Request Content-Type: JSON
Request parameters
Parameter | Type | Required | Example | Description | |||
user_id | String | Yes | useridxxxx | The user ID. Each user has a unique ID in the application. | |||
device_id | String | Yes | deviceidxxx | The device ID. Each device has a unique ID. Note This parameter only applies to the aliyun_old service. | |||
device_type | String | Yes | android | The type of the device. Valid values:
Note This parameter only applies to the aliyun_old service. | |||
im_server | JSON array | Yes | ["aliyun_old","aliyun_new"] | Specifies the IM services to be used. You can specify multiple services.
| |||
role | String | No | admin | The role of the user. By default, this parameter is left empty. If you set this parameter to admin, the user can call management operations. Note This parameter only applies to the aliyun_old service. | |||
Response parameters
Parameter | Type | Example | Description | ||||
code | Integer | 200 | The HTTP status code that is returned. | ||||
aliyun_old_im | access_token | String | yJlbmRwb2ludHMiOlsid3NzOi8vbWV0YXBhdGguYWxpeXVuY3MuY29tL3dzIl0sImFwcElkIjoiVFkzSTJZWDAiLCJ0b2tlbiI6Im1wLmV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKO******* | The token of the aliyun_old service. | |||
refresh_token | String | yJlbmRwb2ludHMiOlsid3NzOi8vbWV0YXBhdGguYWxpeXVuY3MuY29tL3dzIl0sImFwcElkIjoiVFkzSTJZWDAiLCJ0b2tlbiI6Im1wLmV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKO******* | The refresh token of the aliyun_old service. | ||||
aliyun_new_im | app_id | String | exampleapp | The App ID of the user. | |||
app_sign | String | examplesign | The encrypted string generated by the server, which contains information such as the access domain name. | ||||
app_token | String | exampletoken | The authentication token for logon. | ||||
auth.user_id | String | 123 | The user ID. | ||||
auth.nonce | String | exampleAK | The nonce for authentication. The nonce is returned in the String-AK format and can be up to 64 bytes in length. | ||||
auth.timestamp | Long | 1677576840 | The expiration time of the token. This value is a UNIX timestamp representing the number of seconds that have elapsed since January 1, 1970, 00:00:00 UTC. | ||||
auth.role | String | admin | The role of the user. If the value is admin, the user can call management operations. | ||||
Examples
Sample requests
{
"user_id": "useridxxxx",
"device_id": "deviceidxxxxx",
"device_type":"android",
"im_server":["aliyun_old","aliyun_new"]
"role":"admin"
}Sample success responses
{
"code": 200,
"aliyun_old_im":{
"access_token": "yJlbmRwb2ludHMiOlsid3NzOi8vbWV0YXBhdGguYWxpeXVuY3MuY29tL3dzIl0sImFwcElkIjoiVFkzSTJZWDAiLCJ0b2tlbiI6Im1wLmV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOxxxxxxx",
"refresh_token": "yJlbmRwb2ludHMiOlsid3NzOi8vbWV0YXBhdGguYWxpeXVuY3MuY29tL3dzIl0sImFwcElkIjoiVFkzSTJZWDAiLCJ0b2tlbiI6Im1wLmV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOxxxxxxx"
},
"aliyun_new_im":{
"appid":"exampleapp",
"appsign":"examplesign",
"apptoken":"exampletoken",
"auth":{
"userid":"123",
"nonce":"exampleAK", // This field can be empty.
"timestamp":1677576840,
"role":"admin"
}
}
}/api/v2/live/create
Usage notes
Request protocol: HTTP or HTTPS
Request path: /api/v2/live/create
Authorization required: Yes
Request method: POST
Request Content-Type: JSON
Request parameters
Parameter | Type | Required | Example | Description | |||
title | String | Yes | title**** | The title of the live stream. It can be up to 64 characters in length. | |||
notice | String | No | notice**** | The announcement of the live channel. Note This parameter only applies to the aliyun_old service. | |||
anchor | String | Yes | anchor**** | The user ID of the streamer. | |||
anchor_nick | String | No | anchornick**** | The nickname of the streamer. Note This parameter only applies to the aliyun_old service. | |||
mode | Integer | No | 0 | The live stream mode. Default value: 0. Valid values:
| |||
extends | String | No | {"xx":"xxx"} | The extended field. The value is a JSON string that can be up to 512 characters in length. | |||
im_server | JSON array | Yes | ["aliyun_old","aliyun_new"] | Specifies the IM services to be used. You can specify multiple services.
| |||
Response parameters
Parameter | Type | Example | Description | ||||
code | Integer | 200 | The HTTP status code that is returned. | ||||
id | String | ee487235-5f9b-4cb3-82ce-45c91c365**** | The ID of the live channel. | ||||
created_at | String | 2023-02-27T17:34:00.592750182+08:00 | The time when the live channel was created. | ||||
updated_at | String | 2023-02-27T17:34:00.592750182+08:00 | The time when the live channel information was modified. | ||||
title | String | title**** | The title of the live channel. | ||||
notice | String | notice**** | The announcement of the live channel. | ||||
cover_url | String | The thumbnail of the live channel. This is a reserved field. | |||||
anchor_id | String | anchor_id**** | The user ID of the streamer. | ||||
anchor_nick | String | anchor_nick**** | The nickname of the streamer. | ||||
extends | String | {"xx":"xxx"} | The extended field. | ||||
status | Integer | 0 | The status of the live channel. Valid values: 0: The live stream is being prepared. 1: The live stream has started. 2: The live stream has ended. | ||||
mode | Integer | 0 | The live stream mode. Valid values:
| ||||
chat_id | String | ee487235-5f9b-4cb3-82ce-45c91c36**** | The ID of the IM group. | ||||
meeting_id | String | 0a7656c4-c01b-424d-9882-a8bf44bd**** | The co-streaming ID. | ||||
meeting_info | String | {"members":[{"user_id":"xxx","user_nick":"xxx","user_avatar":"http://xxx"}]} | The information about the viewer that is returned in a JSON string. | ||||
push_url_info | JSON | The stream ingest URLs. | |||||
push_url_info.rtmp_url | String | rtmp://push.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=167**** | The URL of stream ingest over RTMP. | ||||
push_url_info.rts_url | String | artc://push.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=16780**** | The URL of stream ingest over RTS. | ||||
push_url_info.srt_url | String | srt://push.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=167809**** | The URL of stream ingest over SRT. | ||||
pull_url_info | JSON | The streaming URLs. | |||||
pull_url_info.rtmp_url | String | rtmp://pull.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=167809**** | The URL of stream pulling over RTMP. | ||||
pull_url_info.rts_url | String | artc://pull.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=167809**** | The URL of stream pulling over RTS. | ||||
pull_url_info.hls_url | String | http://pull.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****.flv?auth_key=167809**** | The URL of stream pulling over HLS. | ||||
pull_url_info.flv_url | String | http://pull.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****.m3u8?auth_key=167809**** | The URL of stream pulling over FLV. | ||||
link_info | JSON | The co-streaming URLs. | |||||
link_info.rtc_push_url | String | artc://live****.aliyun.com/push/0a7656c4-c01b-424d-9882-a8bf44bd****?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f****&userId=Streamer user ID×tamp=1677576840&token=95e014264c0b937b449e9a5f3f854c32**** | The URL of stream ingest over RTC. | ||||
link_info.rtc_pull_url | String | artc://live****.aliyun.com/play/0a7656c4-c01b-424d-9882-a8bf44bd****?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f*****&userId=Streamer user ID×tamp=1677576840&token=95e014264c0b937b**** | The URL of stream pulling over RTC. | ||||
link_info.cdn_pull_info | JSON | The streaming URLs of the viewer. | |||||
link_info.cdn_pull_info.rtmp_url | String | rtmp://pull.h5v****.vip/live/7c61616e-480b-4de6-b3fc-95cef48f****_0a7656c4-c01b-424d-9882-a8bf44bd****_Streamer user ID_camera?auth_key=167757**** | The URL of stream pulling over RTMP. | ||||
link_info.cdn_pull_info.rts_url | String | artc://pull.h5v****.vip/live/7c61616e-480b-4de6-b3fc-95cef48f****_0a7656c4-c01b-424d-9882-a8bf44bd****_Streamer user ID_camera?auth_key=16775**** | The URL of stream pulling over RTS. | ||||
link_info.cdn_pull_info.hls_url | String | http://pull.h5v****.vip/live/7c61616e-480b-4de6-b3fc-95cef48f****_0a7656c4-c01b-424d-9882-a8bf44bd****_Streamer user ID_camera.flv?auth_key=167757**** | The URL of stream pulling over HLS. | ||||
link_info.cdn_pull_info.flv_url | String | http://pull.h5v****.vip/live/7c61616e-480b-4de6-b3fc-95cef48f****_0a7656c4-c01b-424d-9882-a8bf44bd****_Streamer user ID_camera.m3u8?auth_key=167757**** | The URL of stream pulling over FLV. | ||||
Examples
Sample requests
{
"title": "title****",
"notice": "notice****",
"anchor":"anchor****",
"anchor_nick":"anchornick****",
"mode":0,
"extends":"{\"xx\":\"xxx\"}",
"im_server":["aliyun_old","aliyun_new"]
}Sample success responses
{
"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": "title****",
"notice": "notice****",
"anchor_id": "anchor_id****",
"anchor_nick": "anchor_nick****",
"extends": "{\"xx\":\"xxx\"}",
"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.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=167****",
"rts_url": "artc://push.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=16780****",
"srt_url": "srt://push.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=167809****"
},
"pull_url_info": {
"rtmp_url": "rtmp://pull.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=167809****",
"rts_url": "artc://pull.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****?auth_key=167809****",
"flv_url": "http://pull.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****.flv?auth_key=167809****",
"hls_url": "http://pull.h5v****.vip/live/ee487235-5f9b-4cb3-82ce-45c91c36****.m3u8?auth_key=167809****"
},
"link_info": {
"rtc_push_url": "artc://live****.aliyun.com/push/0a7656c4-c01b-424d-9882-a8bf44bd****?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f****&userId=Streamer user ID×tamp=1677576840&token=95e014264c0b937b449e9a5f3f854c32anchor****",
"rtc_pull_url": "artc://live****.aliyun.com/play/0a7656c4-c01b-424d-9882-a8bf44bd****?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f****&userId=Streamer user ID×tamp=1677576840&token=95e014264c0b937b4anchor****",
"cdn_pull_info": {
"rtmp_url": "rtmp://pull.h5v****.vip/live/7c61616e-480b-4de6-b3fc-95cef48f****_0a7656c4-c01b-424d-9882-a8bf44bd****_Streamer user ID_camera?auth_key=167757****",
"rts_url": "artc://pull.h5v****.vip/live/7c61616e-480b-4de6-b3fc-95cef48f****_0a7656c4-c01b-424d-9882-a8bf44bd****_Streamer user ID_camera?auth_key=16775****",
"flv_url": "http://pull.h5v****.vip/live/7c61616e-480b-4de6-b3fc-95cef48f****_0a7656c4-c01b-424d-9882-a8bf44bd****_Streamer user ID_camera.flv?auth_key=167757****",
"hls_url": "http://pull.h5v****.vip/live/7c61616e-480b-4de6-b3fc-95cef48f****_0a7656c4-c01b-424d-9882-a8bf44bd****_Streamer user ID_camera.m3u8?auth_key=167757****"
}
}
}