tirtc-devtools-cli 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/USAGE.md +151 -366
- package/dist/devtools/cli/src/config.d.ts +4 -13
- package/dist/devtools/cli/src/config.js +7 -19
- package/dist/devtools/cli/src/facade.d.ts +39 -154
- package/dist/devtools/cli/src/facade.js +9 -23
- package/dist/devtools/cli/src/guide.js +7 -9
- package/dist/devtools/cli/src/index.js +135 -255
- package/dist/devtools/cli/src/token_command.d.ts +7 -0
- package/dist/devtools/cli/src/token_command.js +139 -0
- package/package.json +1 -1
- package/vendor/app-server/bin/native/macos-arm64/credential_napi.node +0 -0
- package/vendor/app-server/bin/native/macos-arm64/runtime_host_napi.node +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/include/tirtc/trp.h +30 -17
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_audio.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_credential.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_facade.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_foundation_http.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_foundation_logging.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_media.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_transport.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_video.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/manifest.txt +10 -10
- package/vendor/app-server/dist/host/HostProtocol.d.ts +7 -5
- package/vendor/app-server/dist/host/HostProtocol.js +21 -10
- package/vendor/app-server/dist/host/HostServer.d.ts +2 -2
- package/vendor/app-server/dist/host/HostServer.js +93 -35
- package/vendor/app-server/dist/host/HostState.d.ts +0 -5
- package/vendor/app-server/dist/host/HostState.js +0 -1
- package/vendor/app-server/dist/host/RuntimeAdapter.d.ts +12 -0
- package/vendor/app-server/dist/host/RuntimeAdapter.js +42 -3
- package/vendor/app-server/dist/host/RuntimeSendWorker.d.ts +4 -0
- package/vendor/app-server/dist/host/RuntimeSendWorker.js +17 -0
- package/vendor/app-server/dist/protocol/contract.d.ts +72 -14
- package/vendor/app-server/dist/protocol/contract.js +11 -8
package/README.md
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
关于 `tirtc-devtools-cli` 命令的详细使用方法、参数说明与示例,请参考 [USAGE.md](./USAGE.md)。
|
|
8
8
|
|
|
9
|
+
如果要先快速确认当前 binary 暴露了哪些命令面,直接运行:`node devtools/cli/bin/tirtc-devtools-cli.js --help`。
|
|
10
|
+
|
|
9
11
|
## 负责什么
|
|
10
12
|
|
|
11
13
|
- **唯一用户产品门面**:提供 `tirtc-devtools-cli` 命令族,覆盖常见的 RTC 测试操作,让内部研发、外部开发者和 AI agent 脚本无需手写底层协议。
|
|
@@ -49,4 +51,4 @@
|
|
|
49
51
|
|
|
50
52
|
- 本地测试配置文件路径:`devtools/cli/tests/.local/runtime-backed.e2e.local.json`(必需,已在 `.gitignore` 忽略)。
|
|
51
53
|
- 示例模板:`devtools/cli/tests/runtime-backed.e2e.config.example.json`。
|
|
52
|
-
-
|
|
54
|
+
- CLI server-only 正式 E2E 现在直接读取 `mp4Path`,由 `service start` 内部自动 prepare;不再要求先手工 prepare 再维护 `assetsDir`。
|
package/USAGE.md
CHANGED
|
@@ -2,435 +2,220 @@
|
|
|
2
2
|
|
|
3
3
|
`tirtc-devtools-cli` 是基于 `app-server/host` 的命令行门面,用来控制会话、服务、连接、流、命令通道与调试工具。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 一、关系
|
|
6
6
|
|
|
7
|
-
- Runtime
|
|
8
|
-
- App Server:把 Runtime
|
|
9
|
-
- CLI
|
|
7
|
+
- Runtime:底层 transport/audio/video/media 能力。
|
|
8
|
+
- App Server:把 Runtime 组织成稳定控制面协议。
|
|
9
|
+
- CLI:面向用户的命令行门面,通过协议驱动 App Server。
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
## 二、如何编译“最新”CLI
|
|
14
|
-
|
|
15
|
-
你提到的重点是对的:不仅要“安装”,还要能拿到**最新源码构建产物**。
|
|
16
|
-
|
|
17
|
-
### 1) 开发态构建(最快)
|
|
11
|
+
## 二、开发态构建
|
|
18
12
|
|
|
19
13
|
```bash
|
|
20
|
-
npm --prefix app-server ci
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
npm --prefix app-server ci
|
|
15
|
+
npm --prefix devtools/cli ci
|
|
16
|
+
npm --prefix app-server run build
|
|
17
|
+
npm --prefix devtools/cli run build
|
|
24
18
|
```
|
|
25
19
|
|
|
26
|
-
|
|
20
|
+
运行入口:
|
|
27
21
|
|
|
28
22
|
```bash
|
|
29
23
|
node devtools/cli/bin/tirtc-devtools-cli.js --help
|
|
30
24
|
```
|
|
31
25
|
|
|
32
|
-
|
|
26
|
+
## 三、Help 菜单速览
|
|
33
27
|
|
|
34
|
-
|
|
28
|
+
安装或构建完成后,先用 help 菜单确认当前 binary 暴露的命令面:
|
|
35
29
|
|
|
36
30
|
```bash
|
|
37
|
-
|
|
38
|
-
./app-server/script/package.sh
|
|
39
|
-
./devtools/cli/script/package.sh
|
|
31
|
+
node devtools/cli/bin/tirtc-devtools-cli.js --help
|
|
40
32
|
```
|
|
41
33
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
-
|
|
34
|
+
当前顶层 help 快照:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
Usage: tirtc-devtools-cli [options] [command]
|
|
38
|
+
|
|
39
|
+
TiRTC DevTools CLI
|
|
40
|
+
|
|
41
|
+
Options:
|
|
42
|
+
--config <path> 配置文件路径(TOML)
|
|
43
|
+
--json 以机器可读 JSON 输出(便于脚本集成)
|
|
44
|
+
--session <sessionId> 指定会话 ID;除 service start/connect 外必须传
|
|
45
|
+
-h, --help display help for command
|
|
46
|
+
|
|
47
|
+
Commands:
|
|
48
|
+
host Host 基础能力(状态、停止)
|
|
49
|
+
init 新手第一步:生成 CLI 配置模板
|
|
50
|
+
media 媒体素材辅助:prepare local assets
|
|
51
|
+
service 服务端能力:启动/停止服务,等待远端接入
|
|
52
|
+
connection 客户端能力:主动连接远端 peer
|
|
53
|
+
token Token 工具:签发 token,并输出可直接使用的 JSON 与本地二维码 PNG
|
|
54
|
+
stream 流控制:发送/接收/消息
|
|
55
|
+
output 输出挂载:文件等消费者 attach/detach
|
|
56
|
+
command 命令通道:发送命令与事件跟踪
|
|
57
|
+
debug 调试工具:连接 bootstrap 二维码
|
|
58
|
+
events 事件订阅:实时观察 Host 事件
|
|
59
|
+
logs 日志导出:导出运行日志
|
|
60
|
+
report 报告查看/导出:验收证据
|
|
61
|
+
guide 新手入口:按场景给出可执行步骤
|
|
62
|
+
```
|
|
46
63
|
|
|
47
|
-
|
|
64
|
+
常用子菜单 help:
|
|
48
65
|
|
|
49
66
|
```bash
|
|
50
|
-
|
|
67
|
+
node devtools/cli/bin/tirtc-devtools-cli.js service --help
|
|
68
|
+
node devtools/cli/bin/tirtc-devtools-cli.js stream --help
|
|
69
|
+
node devtools/cli/bin/tirtc-devtools-cli.js command --help
|
|
70
|
+
node devtools/cli/bin/tirtc-devtools-cli.js token issue --help
|
|
51
71
|
```
|
|
52
72
|
|
|
53
|
-
|
|
73
|
+
当前关键子菜单快照:
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
$ node ... service --help
|
|
77
|
+
Commands:
|
|
78
|
+
start 启动 server-only 会话(必须显式提供 --config)
|
|
79
|
+
stop 停止服务端监听
|
|
80
|
+
|
|
81
|
+
$ node ... stream --help
|
|
82
|
+
Commands:
|
|
83
|
+
list 查看流快照列表
|
|
84
|
+
send 发送流:绑定 prepared local assets 并发起上行
|
|
85
|
+
receive 接收流:声明并接收下行
|
|
86
|
+
message <send> <streamId> <payload> 发送 UTF-8 字符串型 stream message
|
|
87
|
+
|
|
88
|
+
$ node ... command --help
|
|
89
|
+
Commands:
|
|
90
|
+
send <commandId> <kind> <payloadEncoding> <payload> 发送字符串型命令并等待响应
|
|
91
|
+
tail 持续监听命令相关事件
|
|
92
|
+
|
|
93
|
+
$ node ... token issue --help
|
|
94
|
+
Options:
|
|
95
|
+
--access-id <accessId>
|
|
96
|
+
--secret-key <secretKey>
|
|
97
|
+
--local-id <localId>
|
|
98
|
+
--openapi-entry <url>
|
|
99
|
+
--service-entry <entry>
|
|
100
|
+
--user-ttl-seconds <seconds>
|
|
101
|
+
--channel-ttl-seconds <seconds>
|
|
102
|
+
--qr-error-correction-level <level>
|
|
103
|
+
--ascii-max-columns <columns>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## 四、全局参数
|
|
54
107
|
|
|
55
108
|
- `--config <path>`:TOML 配置文件路径。
|
|
56
109
|
- `--json`:结构化 JSON 输出。
|
|
57
|
-
- `--session <sessionId
|
|
110
|
+
- `--session <sessionId>`:除 `service start` / `connection connect` 外,其余业务命令必须显式提供。
|
|
58
111
|
|
|
59
|
-
##
|
|
112
|
+
## 五、会话模型
|
|
60
113
|
|
|
61
114
|
一个 session = 一个常驻 Host 进程 + 一个 endpoint runtime 实例。
|
|
62
115
|
|
|
63
|
-
- `
|
|
64
|
-
- `
|
|
65
|
-
- `
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
- 单机同一时刻只允许一个 `service` 会话;再次 `service start` 会直接失败并提示先停止已有服务会话。
|
|
70
|
-
- `service start`:自动创建一个 session(也可通过 `--session` 绑定已有 session)。
|
|
71
|
-
- `connection connect`:总是创建新的 session(不支持复用已有 session),允许多个 client 会话并行。
|
|
72
|
-
- 除上述两条入口命令外,其他业务命令都必须显式传 `--session <sessionId>`。
|
|
73
|
-
|
|
74
|
-
## 五、命令总览
|
|
75
|
-
|
|
76
|
-
### Config
|
|
77
|
-
|
|
78
|
-
用途:初始化 CLI 配置文件,作为后续 `service/debug/logging` 等命令的参数来源。
|
|
79
|
-
|
|
80
|
-
- `tirtc-devtools-cli init [outputPath]`:生成配置模板;不传路径时默认写入 `./.tmp/tirtc-devtools-cli/config.toml`。
|
|
81
|
-
|
|
82
|
-
### Host
|
|
83
|
-
|
|
84
|
-
用途:管理 Host 进程生命周期与会话健康状态。
|
|
85
|
-
|
|
86
|
-
- `tirtc-devtools-cli host status`:查看当前 Host/service/connection/artifact 状态。
|
|
87
|
-
- `tirtc-devtools-cli host stop`:停止当前 `--session` 对应的 Host 进程。
|
|
88
|
-
- `tirtc-devtools-cli host stop --all`:停止全部 session 对应 Host,并清理本机 orphan host 进程。
|
|
89
|
-
|
|
90
|
-
### Service
|
|
91
|
-
|
|
92
|
-
用途:控制服务端角色(等待远端连接的一侧)。
|
|
93
|
-
|
|
94
|
-
- `tirtc-devtools-cli service start [serviceEntry] [license]`:启动服务并进入等待连接状态。
|
|
95
|
-
- `tirtc-devtools-cli service stop`:停止服务。
|
|
96
|
-
|
|
97
|
-
说明:`license` 必填;`serviceEntry` 可省略,省略时走 runtime/core/transport 默认值。
|
|
98
|
-
|
|
99
|
-
`debug bootstrap qrcode` / `debug bootstrap qrcode-from-config` 默认复用当前唯一活跃 session;多 session 时请显式传 `--session`。
|
|
100
|
-
|
|
101
|
-
### Connection
|
|
102
|
-
|
|
103
|
-
用途:控制客户端侧连接动作(主动连接/断开)。
|
|
104
|
-
|
|
105
|
-
- `tirtc-devtools-cli connection show`:查看当前连接状态。
|
|
106
|
-
- `tirtc-devtools-cli connection connect [serviceEntry] <peerId> [token]`:主动发起连接(不传 token 时自动签发)。
|
|
107
|
-
- `tirtc-devtools-cli connection disconnect`:主动断开连接。
|
|
108
|
-
|
|
109
|
-
说明:`connect` 每次都会新建一个 session;省略 `serviceEntry` 时,Host 回退到 runtime 配置默认值。
|
|
116
|
+
- `host session start`:创建会话。
|
|
117
|
+
- `host session list`:查看会话。
|
|
118
|
+
- `host session stop <sessionId>`:停止会话。
|
|
119
|
+
- `service start`:默认创建 `service` 会话;可通过 `--session` 绑定已有空闲会话。
|
|
120
|
+
- `connection connect`:总是创建新的 `client` 会话,不允许复用 `--session`。
|
|
110
121
|
|
|
111
|
-
|
|
122
|
+
## 六、server-only 正式入口
|
|
112
123
|
|
|
113
|
-
|
|
114
|
-
- `local_id` 可选;缺省时 App Server 侧回退为本次连接使用的 `peer_id`。
|
|
115
|
-
- 若手动 token 与自动签发配置都缺失,命令会失败。
|
|
124
|
+
### 1. 配置真相
|
|
116
125
|
|
|
117
|
-
|
|
126
|
+
server-only 正式路径只认 `[server] + [logging]`:
|
|
118
127
|
|
|
119
|
-
|
|
128
|
+
```toml
|
|
129
|
+
[server]
|
|
130
|
+
service_entry = ""
|
|
131
|
+
license = "runtime-license"
|
|
132
|
+
mp4_path = "/Users/allenfeng/Development/Repositories/tirtc-nexus/tirtc-matrix/.refers/simple.mp4"
|
|
133
|
+
video_stream_id = 10
|
|
134
|
+
audio_stream_id = 11
|
|
120
135
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
- `--secret-key <secretKey>`:显式传 secret key;不传时读取 `TIRTC_CONN_SECRET_KEY`。
|
|
127
|
-
- `--local-id <localId>`:显式传 local id;不传时默认使用 `peerId`。
|
|
128
|
-
- `--openapi-entry <url>`:覆盖默认 openapi entry。
|
|
129
|
-
- `--service-entry <entry>`:附加到组合 payload,便于扫码后直接连到目标服务。
|
|
130
|
-
- `--user-ttl-seconds <seconds>`:覆盖 user token ttl。
|
|
131
|
-
- `--channel-ttl-seconds <seconds>`:覆盖 channel token ttl。
|
|
132
|
-
- `--qr-error-correction-level <level>`:设置二维码纠错级别,可选 `L/M/Q/H`,默认 `M`。
|
|
133
|
-
- `--ascii-max-columns <columns>`:显式限制 ASCII 二维码最大宽度;不传时优先读取当前终端宽度或 `COLUMNS`。
|
|
134
|
-
|
|
135
|
-
默认输出四部分:
|
|
136
|
-
|
|
137
|
-
- `Issued Token Summary`:面向人类阅读的摘要,快速确认 local/peer/entry/ttl。
|
|
138
|
-
- `Token`:单独罗列 token 字符串,便于复制粘贴。
|
|
139
|
-
- `Payload JSON`:组合 JSON,对方或 Agent 可直接复制使用。
|
|
140
|
-
- `QR Code ASCII`:非 `--json` 模式下尽量输出 ASCII 二维码;如果终端宽度不足,会提示改看 PNG。
|
|
141
|
-
- `QR Code PNG`:基于组合 JSON 生成的本地 PNG 文件绝对路径。适合人工打开图片后扫码。
|
|
136
|
+
[logging]
|
|
137
|
+
root_dir = "./.tmp/tirtc-devtools-cli/logging"
|
|
138
|
+
console_mirror = true
|
|
139
|
+
level = "info"
|
|
140
|
+
```
|
|
142
141
|
|
|
143
142
|
说明:
|
|
144
143
|
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
- `--json` 模式下只输出 `payload`、`payloadJson`、`token` 和 `qrCodePngPath`,不输出 ASCII 二维码。
|
|
149
|
-
- 如果觉得 ASCII 二维码太密,可把纠错级别从默认 `M` 调低到 `L`;如果希望更耐遮挡,可调高到 `Q` 或 `H`,但二维码会更密。
|
|
144
|
+
- `license`、`mp4_path`、`video_stream_id`、`audio_stream_id` 必填。
|
|
145
|
+
- `service_entry` 可留空,回退到底层默认值。
|
|
146
|
+
- 旧 `[service]`、`[stream.request_policy]`、`[streams.send]` 不再属于正式合同。
|
|
150
147
|
|
|
151
|
-
|
|
148
|
+
### 2. 启动命令
|
|
152
149
|
|
|
153
150
|
```bash
|
|
154
|
-
|
|
155
|
-
export TIRTC_CONN_SECRET_KEY="<SECRET_KEY>"
|
|
156
|
-
tirtc-devtools-cli --json token issue "<PEER_ID>"
|
|
151
|
+
node devtools/cli/bin/tirtc-devtools-cli.js --config ./server.toml --json service start
|
|
157
152
|
```
|
|
158
153
|
|
|
159
|
-
|
|
160
|
-
只有在你明确需要不同的本地用户标识时,才额外传 `--local-id`。
|
|
161
|
-
|
|
162
|
-
### Stream
|
|
163
|
-
|
|
164
|
-
用途:管理音视频流的发送/接收与远端请求策略。
|
|
165
|
-
|
|
166
|
-
- `tirtc-devtools-cli stream list`:列出当前流状态。
|
|
167
|
-
- `tirtc-devtools-cli media assets prepare --source <mp4> --output-root <dir>`:把 MP4 prepare 为 local assets。
|
|
168
|
-
- `tirtc-devtools-cli stream send start <streamId> <media> <assets_dir>`:启动发送流并绑定 prepared local assets。
|
|
169
|
-
- `tirtc-devtools-cli stream send stop <streamId>`:停止发送流。
|
|
170
|
-
- `tirtc-devtools-cli stream receive start <streamId> <media>`:启动接收流。
|
|
171
|
-
- `tirtc-devtools-cli stream receive stop <streamId>`:停止接收流。
|
|
172
|
-
- `tirtc-devtools-cli stream request-policy get`:查看远端请求策略。
|
|
173
|
-
- `tirtc-devtools-cli stream request-policy set <manual|auto-if-bound>`:设置远端请求策略。
|
|
174
|
-
|
|
175
|
-
`request-policy` 行为:
|
|
176
|
-
|
|
177
|
-
- `manual`:只上报远端请求事件,由上层显式决定是否发流。
|
|
178
|
-
- `auto-if-bound`:如果本地已通过 `stream send start` 绑定 `(streamId, media, assets_dir)`,远端请求到达后自动启动发送。
|
|
179
|
-
|
|
180
|
-
发送链路说明:
|
|
181
|
-
|
|
182
|
-
- `stream/sendStart` 走 runtime-backed 真实发送路径。
|
|
183
|
-
- 实际链路:`prepared local assets -> A/V PTS 对齐 -> 真实 uplink (runtime-backed transport)`。
|
|
184
|
-
- 返回字段中的 `source.local_assets.assets_dir` 可用于验收与排障。
|
|
185
|
-
|
|
186
|
-
### Output
|
|
187
|
-
|
|
188
|
-
用途:把流内容挂到具体消费端(文件、预览页等)。
|
|
189
|
-
|
|
190
|
-
- `tirtc-devtools-cli output attach <streamId> <consumer> <mediaView> <format> <delivery> [targetPath] [maxFiles]`:附加输出消费。
|
|
191
|
-
- `tirtc-devtools-cli output detach <outputId>`:移除输出消费。
|
|
192
|
-
|
|
193
|
-
`output attach` 当前最小稳定组合(CLI 前置校验):
|
|
194
|
-
|
|
195
|
-
- `consumer=web_preview`:`delivery` 必须是 `artifact_path`,`format` 推荐 `jpeg`/`pcm`(兼容旧值 `h264`/`g711a`)。
|
|
196
|
-
- `consumer=file_sink`:`delivery` 必须是 `file`,`format` 必须是 `mp4`。
|
|
197
|
-
|
|
198
|
-
`web_preview` 用法(音视频一起预览):
|
|
199
|
-
|
|
200
|
-
- 先在客户端会话中启动接收(必须两路都起):
|
|
201
|
-
- `tirtc-devtools-cli stream receive start <videoStreamId> video`
|
|
202
|
-
- `tirtc-devtools-cli stream receive start <audioStreamId> audio`
|
|
203
|
-
- 再挂接两路输出到同一个预览页:
|
|
204
|
-
- `tirtc-devtools-cli output attach <videoStreamId> web_preview encoded jpeg artifact_path [videoTargetPath]`
|
|
205
|
-
- `tirtc-devtools-cli output attach <audioStreamId> web_preview encoded pcm artifact_path [audioTargetPath]`
|
|
206
|
-
- 两次 `output attach` 返回的 `result.preview.url` 应一致;用该 URL 在 Chrome 打开本地预览。
|
|
207
|
-
- 页面打开后会自动触发 `GET /preview/start?token=...`;若浏览器拦截自动播放音频,请手动点击 `Start Stream` 解锁。
|
|
208
|
-
- 可通过 `GET /preview/status?token=...` 查看 audio/video source 启动状态与 frame 计数。
|
|
209
|
-
|
|
210
|
-
### Command
|
|
211
|
-
|
|
212
|
-
用途:发送业务命令与实时观察命令事件。
|
|
213
|
-
|
|
214
|
-
- `tirtc-devtools-cli command send <commandId> <kind> <payloadEncoding> <payload>`:发送命令。
|
|
215
|
-
- `tirtc-devtools-cli command send-json <commandId> <kind> <payloadJson>`:以 JSON-first 形态发送命令。
|
|
216
|
-
- `tirtc-devtools-cli command tail`:持续监听命令相关事件。
|
|
154
|
+
`service start` 固定流程:
|
|
217
155
|
|
|
218
|
-
|
|
156
|
+
1. 读取并校验 `[server]`。
|
|
157
|
+
2. 对 `mp4_path` 执行 prepare。
|
|
158
|
+
3. 调用 `service/start`。
|
|
159
|
+
4. 自动调用两次 `stream/sendStart`:一次音频、一次视频。
|
|
160
|
+
5. 返回 `autoApplied` 摘要:`preparedAssetsDir`、固定 `mediaSendPolicy=AUTO_ON_CONNECTED`、以及音视频 sendStart 结果。
|
|
219
161
|
|
|
220
|
-
|
|
221
|
-
- CLI 固定按 `payloadEncoding=json` 下发给 Host。
|
|
162
|
+
### 3. 自动发送语义
|
|
222
163
|
|
|
223
|
-
|
|
164
|
+
- App Server server 角色固定使用 `AUTO_ON_CONNECTED`。
|
|
165
|
+
- CLI 不再暴露 request-policy 配置或命令。
|
|
166
|
+
- 一旦远端请求对应 media,已绑定的发送流会自动转为 `active`。
|
|
224
167
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
- `tirtc-devtools-cli debug bootstrap qrcode <accessId> <secretKey> <peerId> [serviceEntry]`:按命令参数生成二维码。
|
|
228
|
-
- `tirtc-devtools-cli debug bootstrap qrcode-from-config`:按 `[debug.connect_bootstrap]` 配置生成二维码。
|
|
229
|
-
|
|
230
|
-
二维码产物会落到 Host artifact 的 `debug/` 目录。
|
|
231
|
-
|
|
232
|
-
### 观测与报告
|
|
233
|
-
|
|
234
|
-
用途:做运行观测与验收证据导出。
|
|
235
|
-
|
|
236
|
-
- `tirtc-devtools-cli events tail`:实时查看事件流。
|
|
237
|
-
- `tirtc-devtools-cli logs export <outputPath>`:导出日志。
|
|
238
|
-
- `tirtc-devtools-cli report show`:查看报告。
|
|
239
|
-
- `tirtc-devtools-cli report export <outputPath>`:导出报告。
|
|
240
|
-
|
|
241
|
-
## 六、服务端操作指引(对接安卓扫码)
|
|
242
|
-
|
|
243
|
-
目标:只操作 CLI 服务端,启动后自动待推流;安卓端扫码拿到 bootstrap 信息,自行签发 token 后连接并观看音视频。
|
|
244
|
-
|
|
245
|
-
### 1) 启动服务端
|
|
246
|
-
|
|
247
|
-
```bash
|
|
248
|
-
node devtools/cli/bin/tirtc-devtools-cli.js service start "" "runtime-license"
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
记下返回里的 `sessionId`。
|
|
252
|
-
|
|
253
|
-
### 2) 让服务端进入“自动按需发流”
|
|
168
|
+
## 七、connection connect
|
|
254
169
|
|
|
255
170
|
```bash
|
|
256
|
-
|
|
257
|
-
[stream.request_policy]
|
|
258
|
-
mode = "auto-if-bound"
|
|
259
|
-
|
|
260
|
-
[streams.send]
|
|
261
|
-
assets_dir = "./.tmp/tirtc-devtools-cli/assets/<prepared-assets-id>"
|
|
262
|
-
audio_stream_id = 10
|
|
263
|
-
video_stream_id = 11
|
|
264
|
-
|
|
265
|
-
再执行 service start(CLI 会自动应用 request_policy + send 绑定)。
|
|
171
|
+
node devtools/cli/bin/tirtc-devtools-cli.js --config ./server.toml --json connection connect <serviceEntry> <peerId> [token]
|
|
266
172
|
```
|
|
267
173
|
|
|
268
174
|
说明:
|
|
269
|
-
- `auto-if-bound` 表示远端请求到达后,若本地已配置并应用发送绑定,服务端会自动开始对应发送。
|
|
270
|
-
- `[streams.send]` 只配置一次 prepared assets 目录;音视频都从同一个 local assets 输入读取。
|
|
271
|
-
- `audio_stream_id` 与 `video_stream_id` 必须与客户端请求的 stream id 一致。
|
|
272
|
-
|
|
273
|
-
### 3) 生成给安卓扫码的 bootstrap 二维码
|
|
274
|
-
|
|
275
|
-
```bash
|
|
276
|
-
node devtools/cli/bin/tirtc-devtools-cli.js --session <SESSION_ID> debug bootstrap qrcode \
|
|
277
|
-
"<access-id>" "<secret-key>" "<peer-id>" "<service-entry>"
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
命令会在 Host artifact 的 `debug/` 目录下生成:
|
|
281
|
-
- `*.qr.png`(扫码图)
|
|
282
175
|
|
|
283
|
-
|
|
176
|
+
- 若未显式传 `token`,CLI 会尝试使用 `[connection.auto_token]` 触发 App Server 自动签发。
|
|
177
|
+
- 若命令行、省略 token、且配置也缺自动签发凭据,则命令失败。
|
|
284
178
|
|
|
285
|
-
|
|
286
|
-
- 使用 `access_id + secret_key` 在客户端侧(或你们外部签发服务)签发连接 token。
|
|
287
|
-
- 使用签发后的 token + `peer_id`(必要时加 `service_entry`)建立连接。
|
|
288
|
-
- 连接成功后请求接收对应流(例如 `10/video`、`11/audio`),即可看到服务端已绑定的媒体内容。
|
|
289
|
-
|
|
290
|
-
### 4.1) 本地直接签发 token(公开调试入口)
|
|
291
|
-
|
|
292
|
-
```bash
|
|
293
|
-
node devtools/cli/bin/tirtc-devtools-cli.js token issue \
|
|
294
|
-
"<access-id>" "<secret-key>" "<local-id>" "<peer-id>" \
|
|
295
|
-
--service-entry "<service-entry>"
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
输出包含:
|
|
299
|
-
|
|
300
|
-
- 一份可直接复制的组合 JSON
|
|
301
|
-
- 单独的 token 字符串
|
|
302
|
-
- 同一份组合 JSON 对应的本地二维码 PNG 路径
|
|
303
|
-
|
|
304
|
-
二维码内容示例:
|
|
305
|
-
|
|
306
|
-
```json
|
|
307
|
-
{
|
|
308
|
-
"version": 1,
|
|
309
|
-
"type": "tirtc-connect-token",
|
|
310
|
-
"peer_id": "<peer-id>",
|
|
311
|
-
"local_id": "<local-id>",
|
|
312
|
-
"service_entry": "<service-entry>",
|
|
313
|
-
"token": "<issued-token>",
|
|
314
|
-
"openapi_entry": "http://api-test-tirtc.tange365.com",
|
|
315
|
-
"user_ttl_seconds": 86400,
|
|
316
|
-
"channel_ttl_seconds": 300,
|
|
317
|
-
"generated_at": "<iso8601>"
|
|
318
|
-
}
|
|
319
|
-
```
|
|
179
|
+
## 八、stream / output / command
|
|
320
180
|
|
|
321
|
-
###
|
|
322
|
-
|
|
323
|
-
- 在客户端会话 attach 两路 `web_preview` 后,打开返回的 `preview.url`。
|
|
324
|
-
- 页面默认只建立事件连接,不会自动起流。
|
|
325
|
-
- 点击 `Start Stream`:触发服务端开始推送音视频。
|
|
326
|
-
- 点击 `Stop Stream`:触发服务端停止推送。
|
|
327
|
-
- 关闭页面:会自动触发一次 stop 请求(作为兜底)。
|
|
328
|
-
|
|
329
|
-
## 六点四、二维码内容协议(安卓对齐)
|
|
330
|
-
|
|
331
|
-
`debug bootstrap qrcode*` 生成的 payload 是一个 JSON 字符串,字段如下:
|
|
332
|
-
|
|
333
|
-
```json
|
|
334
|
-
{
|
|
335
|
-
"version": 1,
|
|
336
|
-
"type": "tirtc-connect-bootstrap",
|
|
337
|
-
"access_id": "<access-id>",
|
|
338
|
-
"secret_key": "<secret-key>",
|
|
339
|
-
"peer_id": "<peer-id>",
|
|
340
|
-
"service_entry": "<service-entry>"
|
|
341
|
-
}
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
字段约束:
|
|
345
|
-
- `version`: 固定 `1`。
|
|
346
|
-
- `type`: 固定 `tirtc-connect-bootstrap`。
|
|
347
|
-
- `access_id`: 客户端签发 token 所需。
|
|
348
|
-
- `secret_key`: 客户端签发 token 所需。
|
|
349
|
-
- `peer_id`: 目标服务端 peer 标识。
|
|
350
|
-
- `service_entry`: 可选;为空或缺失时,客户端按自身默认 entry 策略处理。
|
|
351
|
-
|
|
352
|
-
注意:
|
|
353
|
-
- 该二维码不包含 token,也不在 App Server 侧签发 token。
|
|
354
|
-
- token 签发职责在客户端或外部系统。
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
## 六点五、日志配置与实时观测
|
|
358
|
-
|
|
359
|
-
`[logging]` 段默认已在模板里生成:
|
|
360
|
-
|
|
361
|
-
- `root_dir`:会话日志根目录(默认 `./.tmp/tirtc-devtools-cli/logging`)
|
|
362
|
-
- `console_mirror`:是否把 Host 关键日志镜像到当前命令终端
|
|
363
|
-
- `level`:日志级别预留位(当前 Host 以统一关键路径日志为主)
|
|
364
|
-
|
|
365
|
-
日志目录结构:
|
|
366
|
-
|
|
367
|
-
- `<root_dir>/<session_id>/host.process.log`(Host 进程 stdio)
|
|
368
|
-
- `<root_dir>/<session_id>/runtime.host.log`(Host 侧结构化运行日志)
|
|
369
|
-
- `<root_dir>/<session_id>/uplink/*.transport-uplink.log`(发送 worker 日志)
|
|
370
|
-
|
|
371
|
-
实时观察:
|
|
372
|
-
|
|
373
|
-
- `node devtools/cli/bin/tirtc-devtools-cli.js --session <SESSION_ID> events tail`
|
|
374
|
-
- 输出中包含 `family=logs` / `kind=host.line` 的实时日志事件
|
|
375
|
-
|
|
376
|
-
## 六点六、配置格式说明
|
|
377
|
-
|
|
378
|
-
- 推荐使用 TOML(支持注释,便于人工维护)
|
|
379
|
-
- `init` 默认生成 TOML 模板:`.tmp/tirtc-devtools-cli/config.toml`
|
|
380
|
-
|
|
381
|
-
## 七、本地 E2E 配置(必需)
|
|
181
|
+
### Stream
|
|
382
182
|
|
|
383
|
-
|
|
183
|
+
- `stream list`
|
|
184
|
+
- `stream send start <streamId> <media> <assets_dir>`
|
|
185
|
+
- `stream send stop <streamId>`
|
|
186
|
+
- `stream message send <streamId> <payload>`
|
|
187
|
+
- `stream receive start <streamId> <media>`
|
|
188
|
+
- `stream receive stop <streamId>`
|
|
384
189
|
|
|
385
|
-
|
|
386
|
-
mkdir -p devtools/cli/tests/.local
|
|
387
|
-
cp devtools/cli/tests/runtime-backed.e2e.config.example.json devtools/cli/tests/.local/runtime-backed.e2e.local.json
|
|
388
|
-
```
|
|
190
|
+
`stream message send` 是字符串型 payload contract;当前 Host/runtime-backed adapter 至少保证连接存在时可接受请求并落事件。
|
|
389
191
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
```json
|
|
393
|
-
{
|
|
394
|
-
"assetsDir": "./.tmp/tirtc-devtools-cli/assets/<prepared-assets-id>",
|
|
395
|
-
"license": "<license>",
|
|
396
|
-
"peerId": "<peer-id>",
|
|
397
|
-
"useFakeToken": false,
|
|
398
|
-
"accessId": "<access-id>",
|
|
399
|
-
"secretKey": "<secret-key>",
|
|
400
|
-
"e2eToken": "<externally-issued-token>"
|
|
401
|
-
}
|
|
402
|
-
```
|
|
192
|
+
### Output
|
|
403
193
|
|
|
404
|
-
|
|
405
|
-
- `
|
|
406
|
-
- `useFakeToken=false` 时必须提供外部签发 token(优先 `e2eToken`,否则读取环境变量 `TIRTC_E2E_TOKEN`)。
|
|
407
|
-
- `debug bootstrap qrcode*` 仅生成客户端连接信息二维码(`access_id` / `secret_key` / `peer_id` / 可选 `service_entry`),不负责签发 token。
|
|
194
|
+
- `output attach <streamId> <consumer> <mediaView> <format> <delivery> [targetPath] [maxFiles]`
|
|
195
|
+
- `output detach <outputId>`
|
|
408
196
|
|
|
409
|
-
|
|
197
|
+
CLI 仍会在本地收紧最小组合矩阵:
|
|
410
198
|
|
|
411
|
-
-
|
|
412
|
-
-
|
|
413
|
-
- `devtools/cli/bin/tools/<platform>/`
|
|
414
|
-
- `devtools/cli/bin/dist/tools/<platform>/`
|
|
199
|
+
- `web_preview` 只允许 `delivery=artifact_path`,`format` 允许 `jpeg|pcm|h264|g711a`
|
|
200
|
+
- `file_sink` 只允许 `delivery=file`,`format=mp4`
|
|
415
201
|
|
|
416
|
-
|
|
202
|
+
### Command
|
|
417
203
|
|
|
418
|
-
- `
|
|
204
|
+
- `command send <commandId> <kind> <payloadEncoding> <payload>`
|
|
205
|
+
- `command tail`
|
|
419
206
|
|
|
420
|
-
|
|
207
|
+
`command send` 是统一的主动发送 surface。`send-json` 不再属于正式产品合同;如果要发 JSON,请把 JSON 文本作为 `payload` 传入。
|
|
421
208
|
|
|
422
|
-
##
|
|
209
|
+
## 九、token / debug / report
|
|
423
210
|
|
|
424
|
-
-
|
|
425
|
-
-
|
|
426
|
-
-
|
|
211
|
+
- `token issue <peerId>`:本地签发 token。
|
|
212
|
+
- `debug bootstrap qrcode ...` / `debug bootstrap qrcode-from-config`:生成联调用二维码。
|
|
213
|
+
- `events tail`:实时查看事件流。
|
|
214
|
+
- `logs export <outputPath>`:导出日志。
|
|
215
|
+
- `report show` / `report export <outputPath>`:查看或导出报告。
|
|
427
216
|
|
|
428
|
-
##
|
|
217
|
+
## 十、本地 E2E 配置
|
|
429
218
|
|
|
430
|
-
- `
|
|
431
|
-
- `
|
|
432
|
-
- `
|
|
433
|
-
- `3`:未初始化
|
|
434
|
-
- `4`:请求/参数错误
|
|
435
|
-
- `7`:连接失败
|
|
436
|
-
- `8`:流不存在
|
|
219
|
+
- CLI server/client E2E 本地配置文件:`devtools/cli/tests/.local/runtime-backed.e2e.local.json`
|
|
220
|
+
- 推荐字段:`mp4Path`、`serviceEntry`、`license`、`peerId`、`accessId`、`secretKey`、可选 `e2eToken`
|
|
221
|
+
- CLI server-only E2E 不再要求先手工 `media assets prepare` 再回填 `assetsDir`
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export type CliConfig = {
|
|
2
|
-
|
|
2
|
+
server?: {
|
|
3
3
|
service_entry?: string;
|
|
4
4
|
license?: string;
|
|
5
|
+
mp4_path?: string;
|
|
6
|
+
video_stream_id?: number;
|
|
7
|
+
audio_stream_id?: number;
|
|
5
8
|
};
|
|
6
9
|
connection?: {
|
|
7
10
|
service_entry?: string;
|
|
@@ -16,18 +19,6 @@ export type CliConfig = {
|
|
|
16
19
|
channel_ttl_seconds?: number;
|
|
17
20
|
};
|
|
18
21
|
};
|
|
19
|
-
stream?: {
|
|
20
|
-
request_policy?: {
|
|
21
|
-
mode?: 'manual' | 'auto-if-bound';
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
streams?: {
|
|
25
|
-
send?: {
|
|
26
|
-
assets_dir?: string;
|
|
27
|
-
audio_stream_id?: number;
|
|
28
|
-
video_stream_id?: number;
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
22
|
logging?: {
|
|
32
23
|
root_dir?: string;
|
|
33
24
|
console_mirror?: boolean;
|