CDN推流
通过CDN推流API来开启和停止互动直播。
开启推流
请求:
POST /streaming/start
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596
{
"channelId":"Hello Pano", // string, 必填, 频道ID
"streamList": [
{
"streamId": 1, // int, 必填, 用户指定的流ID
"type": 1, // int, 必填, 1:混流, 2:单流
"userId": "1", // string, 可选, 主讲人Id, 布局为演讲者模式时需要; 推单流("type": 2)时也需要
"layout": {...}, // object, 可选, 布局参数
"flag": 15, // int, 必填, 0x1: 推音频 0x2: 推视频 0x4: 推桌面共享 0x8: 推白板
"url": "rtmp://...", // string, 必填, RTMP推流地址
"delayClose": 10, // int, 可选, 延迟关闭推流,有效值0-600,单位秒. 默认值是0, 不会延迟关闭
"fps": 15 // int, 可选, 支持15帧和30帧. 默认值是30帧
},
{
"streamId": 2,
"type": 2,
"userId": "2",
"layout": {...},
"flag": 15,
"url": "rtmp://...",
"delayClose": 10,
"fps": 15
}
]
}
参数说明:
- streamId - 由客户指定,需要保证同一个频道的streamId不重复,后面可以使用streamId来更新、停止推流
- type - 推流模式
- type = 1,混流模式,频道内所有用户的音视频混合成推到CDN
- type = 2,单流模式,单个用户的音视频流混合后推到CDN
- userId - 推单个人时的userId,推所有人时的主讲人ID,推所有人时如果不指定userId则将第一个入会的作为主讲人
- layout - 设置视频合流布局,格式请参考布局参数说明
- flag - 表示推哪些媒体流,多个值相加表示多个媒体,值15表示所有媒体
- url - 推流地址,目前只支持RTMP推流,CDN一般支持RTMP、HLS和FLV等方式拉流
- 如果是自己采购的CDN服务,请向CDN厂商获取推拉流地址,如果是从Pano采购的CDN服务,请使用RESTful API获取推拉流地址,详细的API格式请咨询技术支持
- delayClose - 在收到停止推流的消息后,延迟一段时间关闭推流
- fps - 设置推流的帧率
开发者可以指定在同一个频道里推多路流,每一路流有各自独立的布局,推不同的直播间。
响应:
状态码 | 说明 |
---|---|
200 | 请求成功处理 |
400 | 请求格式错误 |
401 | 认证错误 |
404 | 频道不存在。该错误可能是在第一个用户开启频道之前发起推流时发生,可尝试重试该请求。 |
500 | 服务器端内部错误 |
更新推流
请求:
PUT /streaming/update
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596
{
"channelId":"Hello Pano", // string, 必填, 频道ID
"streamList": [
{
"streamId": 1, // int, 必填, 用户指定的流ID
"userId": "1", // string, 可选, 主讲人Id, 当布局为演讲者模式时需要
"layout": {...}, // object, 可选, 布局参数
"url": "rtmp://...", // string, 可选, 推流地址
"fps": 15 // int, 可选, 支持15帧和30帧
},
{
"streamId": 2,
"layout": {...},
"url": "rtmp://...",
"fps": 15
}
]
}
通过更新接口可以更新stream的布局、直播url、混流时的主讲人Id等。
请注意,type和flag不可以更新。如果是单流,userId也不可以更新。
响应:
状态码 | 说明 |
---|---|
200 | 请求成功处理 |
400 | 请求格式错误 |
401 | 认证错误 |
404 | 频道不存在 |
500 | 服务器端内部错误 |
结束推流
请求:
POST /streaming/stop
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596
{
"channelId": "Hello Pano", // string, 必填, 频道ID
"streamId": 1 // int, 可选, 当为空时, 结束频道下所有推流, 当不为空时, 仅结束此streamId对应推流
}
响应:
状态码 | 说明 |
---|---|
200 | 请求成功处理 |
400 | 请求格式错误 |
401 | 认证错误 |
404 | 频道不存在 |
500 | 服务器端内部错误 |