声网消息通知服务器以 HTTPS POST 请求方法向你的服务器发送融合 CDN 直播的消息通知回调。数据格式为 JSON,字符编码为 UTF-8,签名算法为 HMAC/SHA1 或 HMAC/SHA256。
消息通知回调的 header
中包含以下字段:
字段名 | 值 |
---|---|
Content-Type |
application/json;charset=utf-8 |
Agora-Signature |
声网用密钥(secret)和 HMAC/SHA1 算法生成的签名值。你需要使用密钥(secret)和 HMAC/SHA1 算法来验证该签名值。详见验证签名。 |
Agora-Signature-V2 |
声网用密钥(secret)和 HMAC/SHA256 算法生成的签名值。你需要使用密钥(secret)和 HMAC/SHA256 算法来验证该签名值。详见验证签名。 |
消息通知回调的请求包体包含以下字段:
字段 | 类型 | 描述 |
---|---|---|
noticeId |
String | 通知 ID,标识来自声网业务服务器的一次事件通知。 |
productId |
Integer | 业务 ID。值为 7 表示融合 CDN 直播业务。 |
eventType |
Integer | 通知的事件类型。详见融合 CDN 直播事件类型。 |
notifyMs |
Integer | 声网消息服务器向你的服务器发送事件通知的 Unix 时间戳 (ms)。通知重试时该值会更新。 |
payload |
JSON Object | 通知事件的具体内容。payload 因 eventType 而异,详见融合 CDN 直播事件类型。 |
消息通知回调的请求包体示例:
{
"noticeId": "2000001428:4330:107",
"productId": 7,
"eventType": 0,
"notifyMs": 1611566412672,
"payload": {...}
}
声网消息通知服务可以通知融合 CDN 直播业务中的以下事件类型:
eventType | event_name | 事件描述 |
---|---|---|
1 | publish_start |
推流开始。 |
2 | publish_end |
推流结束。 |
11 | publish_media_info |
报告推流的媒体信息。 |
3 | new_custom_record_file |
生成自定义录制文件。 |
4 | new_custom_snapshot_file |
生成自定义截图文件。 |
6 | new_record_start |
自定义录制开始。 |
7 | new_record_end |
自定义录制结束。 |
101 | new_standard_record_file |
生成标准录制文件。 |
102 | new_standard_snapshot_file |
生成标准截图文件。 |
106 | new_encrypt_record_file |
生成 DRM 加密文件。 |
eventType
为 1 表示推流开始,payload
中包含以下字段:
字段 | 数据类型 | 含义 |
---|---|---|
eventName |
String | 事件名称,即 publish_start 。 |
domain |
String | 推流域名。 |
entryPoint |
String | 发布点名称。 |
streamName |
String | 直播流名称。 |
clientIp |
String | 推流客户端 IP。 |
nodeIp |
String | 节点服务器 IP。 |
payload
示例:
{
"eventName": "publish_start",
"domain": "test.agora.io",
"entryPoint": "live",
"streamName": "test_stream",
"clientIp": "253.199.199.199",
"nodeIp": "253.199.199.199"
}
eventType
为 2 表示推流结束,payload
中包含以下字段:
字段 | 数据类型 | 含义 |
---|---|---|
eventName |
String | 事件名称,即 publish_end 。 |
domain |
String | 推流域名。 |
entryPoint |
String | 发布点名称。 |
streamName |
String | 直播流名称。 |
clientIp |
String | 推流客户端 IP。 |
nodeIp |
String | 节点服务器 IP。 |
payload
示例:
{
"eventName": "publish_end",
"domain": "test.agora.io",
"entryPoint": "live",
"streamName": "test_stream",
"clientIp": "253.199.199.199",
"nodeIp": "253.199.199.199"
}
eventType
为 11 表示推流的媒体信息,payload
中包含以下字段:
字段 | 数据类型 | 含义 |
---|---|---|
eventName |
String | 事件名称,即 publish_media_info 。 |
domain |
String | 推流域名。 |
entryPoint |
String | 发布点名称。 |
streamName |
String | 直播流名称。 |
videoCodec |
String | 视频编码格式。 |
videoFps |
Integer | 视频帧率(fps)。 |
videoRate |
Integer | 视频码率(bps)。 |
height |
Integer | 视频的高。 |
width |
Integer | 视频的宽。 |
audioCodec |
String | 音频编码格式。 |
payload
示例:
{
"eventName": "publish_media_info",
"domain": "test.agora.io",
"entryPoint": "live",
"streamName": "test_stream",
"videoCodec": "H264",
"videoFps": "29",
"videoRate": "1216568",
"height": "720",
"width": "1080",
"audioCodec": "AAC"
}
eventType
为 3 表示自定义录制文件已生成,payload
中包含以下字段:
字段 | 数据类型 | 含义 |
---|---|---|
eventName |
String | 事件名称,即 new_custom_record_file 。 |
entryPoint |
String | 发布点名称。 |
streamName |
String | 直播流名称。 |
fileName |
String | 录制文件名。 |
payload
示例:
{
"eventName": "new_custom_record_file",
"entryPoint": "live",
"streamName": "test_stream",
"fileName": "live/test_stream/20221116055451967_20221116075538229_1d36ec7c1247ff63fcb574a1afd09afe_0.mp4"
}
eventType
为 4 表示自定义截图文件已生成,payload
中包含以下字段:
字段 | 数据类型 | 含义 |
---|---|---|
eventName |
String | 事件名称,即 new_custom_snapshot_file 。 |
entryPoint |
String | 发布点名称。 |
streamName |
String | 直播流名称。 |
fileName |
String | 截图文件名。 |
payload
示例:
{
"eventName": "new_custom_snapshot_file",
"entryPoint": "live",
"streamName": "test_stream",
"fileName": "live/test_stream/20221116034605046_20221116070556_d22ccc5f124bac8c60f294a4ff71baab.jpg"
}
eventType
为 6 表示自定义录制已开始,payload
中包含以下字段:
字段 | 数据类型 | 含义 |
---|---|---|
eventName |
String | 事件名称,即 new_record_start 。 |
entryPoint |
String | 发布点名称。 |
streamName |
String | 直播流名称。 |
fileName |
String | M3U8 录制文件名。 |
payload
示例:
{
"eventName": "new_record_start",
"entryPoint": "live",
"streamName": "test_stream",
"fileName": "live/test_stream/20221116072901278_b7c6cab84b4b576361c812a60ba07053.m3u8"
}
eventType
为 7 表示自定义录制已结束,payload
中包含以下字段:
字段 | 数据类型 | 含义 |
---|---|---|
eventName |
String | 事件名称,即 new_record_end 。 |
entryPoint |
String | 发布点名称。 |
streamName |
String | 直播流名称。 |
fileName |
String | M3U8 录制文件名。 |
payload
示例:
{
"eventName": "new_record_end",
"entryPoint": "live",
"streamName": "test_stream",
"fileName": "live/test_stream/20221116072901278_b7c6cab84b4b576361c812a60ba07053.m3u8"
}
eventType
为 101 表示标准录制文件已生成,payload
中包含以下字段:
字段 | 数据类型 | 含义 |
---|---|---|
eventName |
String | 事件名称,即 new_standard_record_file 。 |
entryPoint |
String | 发布点名称。 |
streamName |
String | 直播流名称。 |
fileName |
String | 录制文件名。 |
payload
示例:
{
"eventName": "new_standard_record_file",
"entryPoint": "live",
"streamName": "test_stream",
"fileName": "record/live/test_stream/20221116055451967_20221116075538229_1d36ec7c1247ff63fcb574a1afd09afe_0.mp4"
}
eventType
为 102 表示标准截图文件已生成,payload
中包含以下字段:
字段 | 数据类型 | 含义 |
---|---|---|
eventName |
String | 事件名称,即 new_standard_snapshot_file 。 |
entryPoint |
String | 发布点名称。 |
streamName |
String | 直播流名称。 |
fileName |
String | 截图文件名。 |
payload
示例:
{
"eventName": "new_custom_snapshot_file",
"entryPoint": "live",
"streamName": "test_stream",
"fileName": "snapshot/live/test_stream/20221116034605046_20221116070556_d22ccc5f124bac8c60f294a4ff71baab.jpg"
}
eventType
为 106 表示已生成经过 DRM 加密的录制文件,payload
中包含以下字段:
字段 | 数据类型 | 含义 |
---|---|---|
eventName |
String | 事件名称,即 new_encrypt_record_file 。 |
entryPoint |
String | 发布点名称。 |
streamName |
String | 直播流名称。 |
fileName |
String | 经过 DRM 加密的 M3U8 录制文件名。 |
payload
示例:
{
"eventName": "new_encrypt_record_file",
"entryPoint": "live",
"streamName": "test_stream",
"fileName": "encrypt/live/test_stream/20221116072901278_b7c6cab84b4b576361c812a60ba07053.m3u8"
}