@xmov/avatar 2.0.1 → 2.1.0
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/dist/agent/cdn-entry.d.ts +1 -0
- package/dist/baseRender/AvatarRenderer.d.ts +0 -1
- package/dist/control/RenderScheduler.d.ts +17 -1
- package/dist/control/ttsa.d.ts +8 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.modern.js +1 -1
- package/dist/index.modern.js.map +1 -1
- package/dist/index.module.js +1 -1
- package/dist/index.module.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/modules/ResourceManager.d.ts +2 -1
- package/dist/utils/request.d.ts +1 -0
- package/package.json +9 -4
- package/src/agent/cdn-entry.ts +15 -0
- package/src/baseRender/AudioRenderer.ts +16 -5
- package/src/baseRender/AvatarRenderer.ts +11 -20
- package/src/baseRender/MSEAudioPlayer.ts +18 -7
- package/src/control/RenderScheduler.ts +74 -8
- package/src/control/ttsa.ts +47 -11
- package/src/index.ts +66 -45
- package/src/modules/ResourceManager.ts +19 -6
- package/src/modules/decoder.ts +34 -1
- package/src/utils/capability-checker.ts +95 -21
- package/src/utils/request.ts +14 -2
- package/src/view/DebugOverlay.ts +9 -4
package/README.md
CHANGED
|
@@ -146,7 +146,7 @@ import XingyunAvatarAgent from '@xmov/avatar/agent';
|
|
|
146
146
|
pnpm install
|
|
147
147
|
cd app/ && pnpm install
|
|
148
148
|
|
|
149
|
-
#
|
|
149
|
+
# 同时监听根 SDK 和 Agent SDK
|
|
150
150
|
pnpm sdk
|
|
151
151
|
|
|
152
152
|
# 启动 Demo 应用
|
|
@@ -155,6 +155,8 @@ pnpm app
|
|
|
155
155
|
# 浏览器访问 http://localhost:5173
|
|
156
156
|
```
|
|
157
157
|
|
|
158
|
+
`pnpm sdk` 会并行运行 `sdk:core` 和 `sdk:agent`。只需监听其中一个入口时,可以单独运行 `pnpm sdk:core` 或 `pnpm sdk:agent`。
|
|
159
|
+
|
|
158
160
|
### 构建
|
|
159
161
|
|
|
160
162
|
```bash
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -118,10 +118,26 @@ export default class RenderScheduler {
|
|
|
118
118
|
next_state: string;
|
|
119
119
|
};
|
|
120
120
|
sendVoiceEnd(): void;
|
|
121
|
+
/**
|
|
122
|
+
* 重连成功恢复(含窗口内 socket.io 自动重连恢复、窗口外重开房间):
|
|
123
|
+
* 数据缓存在断网进入离线时已清空(_offlineMode/_offlineRun),此处仅恢复播放状态:
|
|
124
|
+
* - 标记帧号对齐:首个 BODY/AUDIO 数据到达时按 sf 重设帧时钟
|
|
125
|
+
* - 恢复音频播放
|
|
126
|
+
* - 解码器退出离线模式(重置 _offlineLastFrame、清空离线队列)
|
|
127
|
+
* 避免离线 idle 播放推进的帧号领先服务端续推数据导致人物卡死、音画不同步
|
|
128
|
+
*/
|
|
129
|
+
markReconnectRecover(): void;
|
|
121
130
|
_offlineMode(): void;
|
|
122
131
|
_offlineRun(): void;
|
|
123
132
|
ttsaStateChangeHandle(state: StateChangeInfo): void;
|
|
124
133
|
resume(): void;
|
|
134
|
+
/**
|
|
135
|
+
* app 切后台时暂停音频并清空对齐状态(复用断网离线时的 pause())
|
|
136
|
+
* 不能保留缓存续播:Android 后台视频帧号持续递增而音频停留在暂停位置,
|
|
137
|
+
* 恢复后音画基准脱节;且后台期间可能下发新 speak 数据,旧缓存与新 sf 冲突。
|
|
138
|
+
* 恢复后依赖新下发音频的 sf 作为 firstFrameIndex 重新对齐
|
|
139
|
+
*/
|
|
140
|
+
pauseForBackground(): void;
|
|
125
141
|
/**
|
|
126
142
|
* 设置数字人canvas的显隐状态
|
|
127
143
|
* @param visible 是否可见
|
|
@@ -129,7 +145,7 @@ export default class RenderScheduler {
|
|
|
129
145
|
setAvatarCanvasVisible(visible: boolean): void;
|
|
130
146
|
setCharacterCanvasLayout(layout?: Layout): void;
|
|
131
147
|
setWalkConfig(walkConfig: WalkConfig): void;
|
|
132
|
-
interrupt(type?: string): number;
|
|
148
|
+
interrupt(type?: string, targetSpeechId?: number): number;
|
|
133
149
|
seekToFrame(frame: number): void;
|
|
134
150
|
getCurrentFrameIndex(): number;
|
|
135
151
|
getSpeechId(): number;
|
package/dist/control/ttsa.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ interface ITtsaOptions {
|
|
|
24
24
|
enterOfflineMode: () => void;
|
|
25
25
|
reStartSDK: () => void;
|
|
26
26
|
reconnect_client_timeout: number;
|
|
27
|
+
reconnect_timeout: number;
|
|
27
28
|
sendVoiceEnd: () => void;
|
|
28
29
|
getCurrentFrameIndex: () => number;
|
|
29
30
|
}
|
|
@@ -45,7 +46,9 @@ export default class Ttsa {
|
|
|
45
46
|
private enterOfflineMode;
|
|
46
47
|
private reStartSDK;
|
|
47
48
|
private reconnect_client_timeout;
|
|
49
|
+
private reconnect_timeout;
|
|
48
50
|
private reconnectTimer;
|
|
51
|
+
private socketReconnectTimer;
|
|
49
52
|
private wsConnectTimer;
|
|
50
53
|
private enterOfflineFlag;
|
|
51
54
|
private sendVoiceEnd;
|
|
@@ -57,9 +60,13 @@ export default class Ttsa {
|
|
|
57
60
|
private heartbeatTimer;
|
|
58
61
|
private readonly HEARTBEAT_INTERVAL;
|
|
59
62
|
/**
|
|
60
|
-
* 清除WebSocket
|
|
63
|
+
* 清除WebSocket重连定时器(含停止 socket.io 自动重连的定时器)
|
|
61
64
|
*/
|
|
62
65
|
clearReconnectTimer(): void;
|
|
66
|
+
/**
|
|
67
|
+
* 清除停止 socket.io 自动重连的定时器
|
|
68
|
+
*/
|
|
69
|
+
private clearSocketReconnectTimer;
|
|
63
70
|
/**
|
|
64
71
|
* 启动客户端心跳(每 2s 发送一次 client_heartbeat)
|
|
65
72
|
*/
|