2024/06/28 15:54:22
RTMP 网关事件类型
当消息通知回调的请求 Body 中 product_id
参数为 10
时,表示返回的是 RTMP 网关事件。本页介绍 RTMP 网关事件回调中返回的各事件类型及含义。
1 live_stream_connected
eventType
为 1
表示网关已接收到 RTMP 或 SRT 流,并成功进入了频道。Payload 示例如下:
JSON
{
"sid": "55df7402-8778-11ee-92ed-07ec2e86c928",
"region": "na",
"streamKey": "7B***Qbs",
"rtcInfo": {
"channel": "123",
"uid": "1234"
},
"beginAt": "2023-11-21T02:27:31Z"
}
Payload 中包含如下字段:
字段 | 数据类型 | 说明 |
---|---|---|
sid | String | 推流会话 ID,每次推流都会生成一个唯一的 sid 。 |
region | String | 接收到推流的服务器区域。 |
streamKey | String | 使用的推流码。 |
rtcInfo | Object | RTC 信息:
|
beginAt | String | 开始推流时间(RFC3339格式)。 |
信息
该事件后通常会有对应的 live_stream_disconnected
事件。
2 live_stream_disconnected
eventType
为 2
表示网关(主动或被动)断开流,并且离开了频道。Payload 示例如下:
JSON
{
"sid": "55df7402-8778-11ee-92ed-07ec2e86c928",
"region": "na",
"streamKey": "7B***Qbs",
"rtcInfo": {
"channel": "123",
"uid": "1234"
},
"beginAt": "2023-11-21T02:27:31Z",
"endAt": "2023-11-21T03:27:31Z"
}
Payload 中包含如下字段:
字段 | 数据类型 | 说明 |
---|---|---|
sid | String | 推流会话 ID,每次推流都会生成一个唯一的 sid 。 |
region | String | 接收到推流的服务器区域。 |
streamKey | String | 使用的推流码。 |
rtcInfo | Object | RTC 信息:
|
beginAt | String | 开始推流时间(RFC3339格式)。 |
endAt | String | 结束推流时间(RFC3339格式)。 |
3 live_stream_aborted
eventType
为 3
表示网关接收到 RTMP 或 SRT 流,但是因某种原因终止了该流。Payload 示例如下:
JSON
{
"sid": "55df7402-8778-11ee-92ed-07ec2e86c928",
"region": "na",
"streamKey": "7B***Qbs",
"rtcInfo": {
"channel": "123",
"uid": "1234"
},
"beginAt": "2023-11-21T02:27:31Z",
"errorCode": 100,
"reason": "invalid"
}
Payload 中包含如下字段:
字段 | 数据类型 | 说明 |
---|---|---|
sid | String | 推流会话 ID,每次推流都会生成一个唯一的 sid 。 |
region | String | 接收到推流的服务器区域。 |
streamKey | String | 使用的推流码。 |
rtcInfo | Object | RTC 信息:
|
beginAt | String | 开始推流时间(RFC3339格式)。 |
errorCode | Number | 推流终止错误码。 |
reason | String | 错误信息提示。 |
信息
该事件可能单独发送,也可能夹在 connected
和 disconnected
事件中间发送。
其中,errorCode
的可选值有:
value | 说明 | 建议的处理措施 |
---|---|---|
1 | streamKey 不合法(例如 channelName 为空或者包含非法字符) | 检查 streamKey 格式(特别是本地生成的streamKey ) |
2 | streamKey 已失效(过期或者被删除) | 重新创建新的 streamKey ,然后重试 |
3 | 无权限使用该 streamKey (例如客户自定义域名和 streamKey 绑定的 App ID 不匹配) | 检查 streamKey 和使用的推流域名是否匹配 |
4 | 并发流数量超过配额限制 | 等待重试 |
5 | 检测到冲突,例如同时往同一个 channel + uid 推流 | 如确实没有在同时推流,请隔 5 - 10 秒后重试几次 |
6 | 流属性超过限定值(当前仅限码率) | 检查推流软件配置,调低目标码率值 |
7 | 超过 10 秒无任何音视频数据的流 | 检查是否上次推流异常退出了,然后重试推流 |
8 | 加入频道失败 | reason 字段会提示具体的错误原因:"connect to rtc failed, reason:$N" 。其中,$N 的值,可以参考官网文档中关于 onConnectionStateChanged 回调的 reason 参数说明 |
9 | 与大网断开连接(具体原因需要联系技术支持调查) | 重试几次,若仍有问题,请联系技术支持,确认开通时提供的 App 证书是否正确 |
10 | 未知的服务内部错误(具体原因需要联系技术支持调查) | 尝试重试几次,若仍有问题,请联系技术支持 |
4 live_profile_updated
eventType
为 4
表示流属性更新,例如收到第一帧音频帧和视频帧,或者中途音频或视频的 Profile 发生变更。Payload 示例如下:
JSON
{
"sid": "55df7402-8778-11ee-92ed-07ec2e86c928",
"region": "na",
"streamKey": "7B***Qbs",
"rtcInfo": {
"channel": "123",
"uid": "1234"
},
"videoProfile": {
"codec": "H.264",
"width": 1920,
"height": 1080
},
"audioProfile": {
"sampleRate": 48000,
"channels": 2
},
"beginAt": "2023-11-21T02:27:31Z"
}
Payload 包含如下字段:
字段 | 数据类型 | 说明 |
---|---|---|
sid | String | 流 ID,每次推流都会生成一个新的 sid 。 |
region | String | 接收到推流的服务器区域。 |
streamKey | String | 使用的推流码。 |
rtcInfo | Object | RTC 信息:
|
videoProfile | Object | 视频属性(对于纯音频流,则无此对象):
|
audioProfile | Object | 音频属性:
|
beginAt | String | 开始推流时间(RFC3339 格式)。 |