实时广播分区与紧急插播:完整报文
约 1004 字大约 3 分钟
2026-10-16
本页是场景流程的完整 JSON 序列,按图中编号查阅。示例中的分支互斥,不能顺序重放全部报文;实际 ID、截止、SDP、地址和密钥须由运行时取得。实施状态及字段定义仍以场景与命令页为准。
编号报文
M01 · broadcastControl
{
"msgToken": "s16-51",
"method": "broadcastControl",
"sessionId": "s16-session",
"params": {
"operation": "start",
"expectedRevision": 0,
"broadcastId": "broadcast-1",
"zoneIds": [
"zone-a"
],
"sourceTrackId": "broadcast-audio",
"priority": "emergency"
}
}M02 · broadcastState
{
"msgToken": "s16-51",
"method": "broadcastState",
"sessionId": "s16-session",
"data": {
"state": "starting",
"revision": 1,
"broadcastId": "broadcast-1",
"recipients": [
{
"endpointId": "speaker-a",
"state": "pending"
},
{
"endpointId": "speaker-b",
"state": "pending"
}
]
},
"code": 200
}M17 · sessionInvite
{
"msgToken": "s16-s16-receiver-invite",
"method": "sessionInvite",
"sessionId": "s16-receiver",
"eventSeq": 1,
"params": {
"purpose": "liveBroadcast",
"transport": "webrtc",
"admission": "direct",
"tracks": [
{
"trackId": "broadcast-out",
"kind": "audio",
"sourceId": "broadcast-audio",
"direction": "recvonly",
"codec": "opus",
"state": "requested"
}
],
"expiresAt": 1900000000000
}
}M18 · sessionAccept
{
"msgToken": "s16-s16-receiver-invite",
"method": "sessionAccept",
"sessionId": "s16-receiver",
"params": {
"acceptedTracks": [
"broadcast-out"
]
}
}M19 · requestAck
{
"msgToken": "s16-s16-receiver-invite",
"method": "requestAck",
"sessionId": "s16-receiver",
"code": 200,
"data": {
"requestMethod": "sessionAccept",
"result": {
"state": "negotiating"
}
}
}M20 · mediaOffer
{
"msgToken": "s16-s16-receiver-offer",
"method": "mediaOffer",
"sessionId": "s16-receiver",
"params": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP offer>"
}
}
}M21 · mediaAnswer
{
"msgToken": "s16-s16-receiver-offer",
"method": "mediaAnswer",
"sessionId": "s16-receiver",
"code": 200,
"data": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP answer>"
}
}
}M22 · mediaState
{
"msgToken": "s16-s16-receiver-connected",
"method": "mediaState",
"sessionId": "s16-receiver",
"params": {
"mediaRevision": 1,
"state": "connected"
}
}M23 · requestAck
{
"msgToken": "s16-s16-receiver-connected",
"method": "requestAck",
"sessionId": "s16-receiver",
"code": 200,
"data": {
"requestMethod": "mediaState",
"result": {
"mediaRevision": 1,
"state": "connected"
}
}
}M24 · sessionEstablished
{
"msgToken": "s16-e1",
"method": "sessionEstablished",
"sessionId": "s16-receiver",
"eventSeq": 2,
"data": {
"state": "established",
"mediaRevision": 1
}
}M03 · focusControl
{
"msgToken": "s16-52",
"method": "focusControl",
"sessionId": "s16-music-receiver",
"params": {
"operation": "suspend",
"expectedRevision": 0,
"focusId": "music-focus",
"resources": [
"speaker"
],
"priority": "emergency",
"resumePolicy": "ifUnchanged"
},
"eventSeq": 1
}M04 · focusState
{
"msgToken": "s16-52",
"method": "focusState",
"sessionId": "s16-music-receiver",
"data": {
"state": "suspended",
"revision": 1,
"focusId": "music-focus",
"resources": [
"speaker"
]
},
"code": 200
}M05 · broadcastState
{
"msgToken": "s16-53",
"method": "broadcastState",
"sessionId": "s16-session",
"data": {
"state": "partial",
"revision": 2,
"broadcastId": "broadcast-1",
"recipients": [
{
"endpointId": "speaker-a",
"state": "connected"
},
{
"endpointId": "speaker-b",
"state": "failed",
"reason": "offline"
}
],
"requestToken": "s16-51"
},
"eventSeq": 1
}M06 · broadcastControl
{
"msgToken": "s16-54",
"method": "broadcastControl",
"sessionId": "s16-session",
"params": {
"operation": "stop",
"expectedRevision": 2,
"broadcastId": "broadcast-1"
}
}M07 · broadcastState
{
"msgToken": "s16-54",
"method": "broadcastState",
"sessionId": "s16-session",
"data": {
"state": "stopped",
"revision": 3,
"broadcastId": "broadcast-1",
"recipients": [
{
"endpointId": "speaker-a",
"state": "ended"
},
{
"endpointId": "speaker-b",
"state": "failed",
"reason": "offline"
}
]
},
"code": 200
}M08 · focusControl
{
"msgToken": "s16-55",
"method": "focusControl",
"sessionId": "s16-music-receiver",
"params": {
"operation": "restore",
"expectedRevision": 1,
"focusId": "music-focus",
"resources": [
"speaker"
],
"priority": "background",
"resumePolicy": "ifUnchanged",
"expiresAt": 1900000000000
},
"eventSeq": 2
}M09 · focusState
{
"msgToken": "s16-55",
"method": "focusState",
"sessionId": "s16-music-receiver",
"data": {
"state": "restored",
"revision": 2,
"focusId": "music-focus",
"resources": [
"speaker"
]
},
"code": 200
}M10 · broadcastState
{
"msgToken": "s16-56",
"method": "broadcastState",
"sessionId": "s16-session",
"data": {
"state": "failed",
"revision": 2,
"broadcastId": "broadcast-1",
"recipients": [
{
"endpointId": "speaker-a",
"state": "failed",
"reason": "offline"
}
]
},
"eventSeq": 2
}M11 · sessionEnd
{
"msgToken": "s16-57",
"method": "sessionEnd",
"sessionId": "s16-session",
"params": {
"reason": "userHangup"
}
}M12 · sessionEnded
{
"msgToken": "s16-57",
"method": "sessionEnded",
"sessionId": "s16-session",
"data": {
"state": "ended",
"reason": "userHangup"
},
"code": 200
}M13 · broadcastControl
{
"msgToken": "s16-extra-12",
"method": "broadcastControl",
"sessionId": "s16-recipient",
"params": {
"operation": "subscribe",
"expectedRevision": 0,
"broadcastId": "broadcast-other"
}
}M14 · broadcastState
{
"msgToken": "s16-extra-12",
"method": "broadcastState",
"sessionId": "s16-recipient",
"code": 200,
"data": {
"state": "active",
"revision": 1,
"broadcastId": "broadcast-other",
"recipients": [
{
"endpointId": "speaker-c",
"state": "connected"
}
]
}
}M15 · broadcastControl
{
"msgToken": "s16-extra-14",
"method": "broadcastControl",
"sessionId": "s16-recipient",
"params": {
"operation": "unsubscribe",
"expectedRevision": 1,
"broadcastId": "broadcast-other"
}
}M16 · broadcastState
{
"msgToken": "s16-extra-14",
"method": "broadcastState",
"sessionId": "s16-recipient",
"code": 200,
"data": {
"state": "active",
"revision": 2,
"broadcastId": "broadcast-other",
"recipients": [
{
"endpointId": "speaker-c",
"state": "ended"
}
]
}
}更新日志
2026/10/17 03:27
查看所有更新日志
d04e1-docs(AI与音视频): 按公共主线与场景分支整合接入手册于
