docs(readme): 新增初次部署清单与常见问题;统一 root 执行写法;清除 markdown 粗体标记与残留真实库名
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# contracts/websocket-keypoints.md — 关键点传输契约 v0.1.0
|
||||
# contracts/websocket-keypoints.md - 关键点传输契约 v0.1.0
|
||||
|
||||
Android 辅助 App(发送端)→ Windows 客户端(接收端)。
|
||||
Android 辅助 App(发送端)-> Windows 客户端(接收端)。
|
||||
服务端不参与实时链路,但 T-WEB-006 预处理产出的序列必须与此结构同构。
|
||||
|
||||
## 1. 端点
|
||||
@@ -28,7 +28,7 @@ ws://<windows-host>:8765/pose
|
||||
bit3-7 保留,必须为 0
|
||||
4 4 frame_id u32 LE 单调递增,从 0 开始
|
||||
8 231 keypoints 33 × 7B 见下
|
||||
--------------------------------------------------------------
|
||||
--
|
||||
合计 239
|
||||
```
|
||||
|
||||
@@ -52,13 +52,13 @@ ws://<windows-host>:8765/pose
|
||||
```gdscript
|
||||
func decode(buf: PackedByteArray) -> Dictionary:
|
||||
assert(buf.size() == 239)
|
||||
var magic := buf.decode_u16(0)
|
||||
var magic:= buf.decode_u16(0)
|
||||
assert(magic == 0x4F44 and buf.decode_u8(2) == 1)
|
||||
var flags := buf.decode_u8(3)
|
||||
var frame_id := buf.decode_u32(4)
|
||||
var pts := []
|
||||
var flags:= buf.decode_u8(3)
|
||||
var frame_id:= buf.decode_u32(4)
|
||||
var pts:= []
|
||||
for i in 33:
|
||||
var o := 8 + i * 7
|
||||
var o:= 8 + i * 7
|
||||
pts.append({
|
||||
"x": float(buf.decode_s16(o)) / 32767.0,
|
||||
"y": float(buf.decode_s16(o + 2)) / 32767.0,
|
||||
@@ -70,7 +70,7 @@ func decode(buf: PackedByteArray) -> Dictionary:
|
||||
|
||||
## 3. 文本控制帧(JSON,UTF-8)
|
||||
|
||||
### 3.1 `hello` — Android → Windows,连接后立即发送
|
||||
### 3.1 `hello` - Android -> Windows,连接后立即发送
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -84,25 +84,25 @@ func decode(buf: PackedByteArray) -> Dictionary:
|
||||
}
|
||||
```
|
||||
|
||||
### 3.2 `welcome` — Windows → Android
|
||||
### 3.2 `welcome` - Windows -> Android
|
||||
|
||||
```json
|
||||
{ "type": "welcome", "protocol": "opendance.pose.v1", "sessionId": "uuid", "expectedFps": 30 }
|
||||
```
|
||||
|
||||
### 3.3 `config` — Windows → Android,运行中调整
|
||||
### 3.3 `config` - Windows -> Android,运行中调整
|
||||
|
||||
```json
|
||||
{ "type": "config", "mirror": true, "targetFps": 30, "upperBodyOnly": false, "resolution": "640x480" }
|
||||
```
|
||||
|
||||
### 3.4 `stats` — Android → Windows,每秒一次
|
||||
### 3.4 `stats` - Android -> Windows,每秒一次
|
||||
|
||||
```json
|
||||
{ "type": "stats", "fps": 29.6, "dropped": 3, "latencyMs": 42, "confidenceAvg": 0.93 }
|
||||
```
|
||||
|
||||
### 3.5 `bye` — 双向
|
||||
### 3.5 `bye` - 双向
|
||||
|
||||
```json
|
||||
{ "type": "bye", "reason": "user_stop" }
|
||||
@@ -117,7 +117,7 @@ func decode(buf: PackedByteArray) -> Dictionary:
|
||||
"frameId": 1024,
|
||||
"timestampMs": 1730000000000,
|
||||
"flags": { "mirrored": false, "upperBodyOnly": false },
|
||||
"points": [[0.51, 0.22, -0.03, 0.99], "…共 33 项,顺序固定 [x, y, z, conf]"]
|
||||
"points": [[0.51, 0.22, -0.03, 0.99], "...共 33 项,顺序固定 [x, y, z, conf]"]
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user