@xmov/avatar 2.4.0 → 2.5.0-alpha.1

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.
Files changed (157) hide show
  1. package/README.md +34 -6
  2. package/package-dist/agent/avatar.cjs +1 -0
  3. package/package-dist/agent/avatar.modern.js +1 -0
  4. package/package-dist/agent/avatar.module.js +1 -0
  5. package/package-dist/agent/avatar.umd.js +1 -0
  6. package/package-dist/agent/index.d.ts +42 -0
  7. package/{dist/agent/types.d.ts → package-dist/agent/public-types.d.ts} +115 -116
  8. package/package-dist/index.cjs +3 -0
  9. package/package-dist/index.d.ts +34 -0
  10. package/package-dist/index.modern.js +1 -0
  11. package/package-dist/index.module.js +1 -0
  12. package/package-dist/index.umd.js +14 -0
  13. package/package-dist/public-types.d.ts +205 -0
  14. package/package.json +41 -33
  15. package/dist/agent/avatar.cjs +0 -1
  16. package/dist/agent/avatar.modern.js +0 -1
  17. package/dist/agent/avatar.module.js +0 -1
  18. package/dist/agent/avatar.umd.js +0 -1
  19. package/dist/agent/index.d.ts +0 -137
  20. package/dist/baseRender/AudioRenderer.d.ts +0 -46
  21. package/dist/baseRender/AudioWorklet.d.ts +0 -78
  22. package/dist/baseRender/AvatarRenderer.d.ts +0 -225
  23. package/dist/baseRender/MSEAudioPlayer.d.ts +0 -51
  24. package/dist/baseRender/UIRenderer.d.ts +0 -39
  25. package/dist/baseRender/pcm-audio-processor.d.ts +0 -63
  26. package/dist/control/APIForwarder.d.ts +0 -23
  27. package/dist/control/DataCacheQueue.d.ts +0 -69
  28. package/dist/control/EventDispatcher.d.ts +0 -35
  29. package/dist/control/RenderScheduler.d.ts +0 -171
  30. package/dist/control/SaveAndDownload.d.ts +0 -14
  31. package/dist/control/StreamingClient.d.ts +0 -33
  32. package/dist/control/VideoPlayer.d.ts +0 -47
  33. package/dist/control/ttsa.d.ts +0 -125
  34. package/dist/encoding/media-recorder-encoder.d.ts +0 -33
  35. package/dist/encoding/pcm-webm-encoder.d.ts +0 -13
  36. package/dist/encoding/webcodec-opus-encoder.d.ts +0 -41
  37. package/dist/encoding/webm-muxer.d.ts +0 -90
  38. package/dist/index.cjs +0 -2
  39. package/dist/index.cjs.map +0 -1
  40. package/dist/index.d.ts +0 -251
  41. package/dist/index.modern.js +0 -2
  42. package/dist/index.modern.js.map +0 -1
  43. package/dist/index.module.js +0 -2
  44. package/dist/index.module.js.map +0 -1
  45. package/dist/index.umd.js +0 -2
  46. package/dist/index.umd.js.map +0 -1
  47. package/dist/modules/Composition.d.ts +0 -28
  48. package/dist/modules/ResourceManager.d.ts +0 -299
  49. package/dist/modules/TrackRenderer/base-track.d.ts +0 -4
  50. package/dist/modules/TrackRenderer/index.d.ts +0 -12
  51. package/dist/modules/TrackRenderer/render-implements.d.ts +0 -19
  52. package/dist/modules/TrackRenderer/track-pic.d.ts +0 -8
  53. package/dist/modules/TrackRenderer/track-subtitle.d.ts +0 -8
  54. package/dist/modules/cache-manager.d.ts +0 -5
  55. package/dist/modules/decoder.d.ts +0 -84
  56. package/dist/modules/error-handle.d.ts +0 -17
  57. package/dist/modules/network.d.ts +0 -21
  58. package/dist/modules/sentry-reporter.d.ts +0 -58
  59. package/dist/proto/face_data_pb.d.ts +0 -0
  60. package/dist/types/capability.d.ts +0 -15
  61. package/dist/types/error.d.ts +0 -70
  62. package/dist/types/event.d.ts +0 -25
  63. package/dist/types/frame-data.d.ts +0 -107
  64. package/dist/types/index.d.ts +0 -196
  65. package/dist/types/render.d.ts +0 -18
  66. package/dist/utils/DataInterface.d.ts +0 -113
  67. package/dist/utils/GLDevice.d.ts +0 -46
  68. package/dist/utils/GLPipeline.d.ts +0 -84
  69. package/dist/utils/GLPipelineDebugTools.d.ts +0 -5
  70. package/dist/utils/Math.d.ts +0 -21
  71. package/dist/utils/__tests__/capability-checker.test.d.ts +0 -1
  72. package/dist/utils/audio-session.d.ts +0 -11
  73. package/dist/utils/audio.d.ts +0 -1
  74. package/dist/utils/capability-checker.d.ts +0 -28
  75. package/dist/utils/encodeToken.d.ts +0 -14
  76. package/dist/utils/face.d.ts +0 -1
  77. package/dist/utils/float32-decoder.d.ts +0 -26
  78. package/dist/utils/fpsTracker.d.ts +0 -27
  79. package/dist/utils/index.d.ts +0 -22
  80. package/dist/utils/logger.d.ts +0 -9
  81. package/dist/utils/media-recorder-timestamp.d.ts +0 -15
  82. package/dist/utils/pcmAnalyzer.d.ts +0 -40
  83. package/dist/utils/perfermance.d.ts +0 -15
  84. package/dist/utils/request.d.ts +0 -20
  85. package/dist/utils/requestAnimateFrames.d.ts +0 -31
  86. package/dist/utils/time.d.ts +0 -9
  87. package/dist/utils/video-probe-asset.d.ts +0 -28
  88. package/dist/view/DebugOverlay.d.ts +0 -54
  89. package/dist/worker/streaming-video.d.ts +0 -1
  90. package/src/baseRender/AudioRenderer.ts +0 -328
  91. package/src/baseRender/AudioWorklet.ts +0 -776
  92. package/src/baseRender/AvatarRenderer.ts +0 -1550
  93. package/src/baseRender/MSEAudioPlayer.ts +0 -254
  94. package/src/baseRender/UIRenderer.ts +0 -195
  95. package/src/baseRender/pcm-audio-processor.js +0 -267
  96. package/src/control/APIForwarder.ts +0 -67
  97. package/src/control/DataCacheQueue.ts +0 -372
  98. package/src/control/EventDispatcher.ts +0 -106
  99. package/src/control/RenderScheduler.ts +0 -1000
  100. package/src/control/SaveAndDownload.js +0 -77
  101. package/src/control/StreamingClient.ts +0 -138
  102. package/src/control/VideoPlayer.ts +0 -306
  103. package/src/control/ttsa.ts +0 -754
  104. package/src/encoding/media-recorder-encoder.ts +0 -175
  105. package/src/encoding/pcm-webm-encoder.ts +0 -72
  106. package/src/encoding/webcodec-opus-encoder.ts +0 -258
  107. package/src/encoding/webm-muxer.ts +0 -337
  108. package/src/global.d.ts +0 -112
  109. package/src/index.ts +0 -2053
  110. package/src/modules/Composition.ts +0 -79
  111. package/src/modules/ResourceManager.ts +0 -926
  112. package/src/modules/TrackRenderer/base-track.ts +0 -7
  113. package/src/modules/TrackRenderer/index.ts +0 -40
  114. package/src/modules/TrackRenderer/render-implements.ts +0 -269
  115. package/src/modules/TrackRenderer/track-pic.ts +0 -19
  116. package/src/modules/TrackRenderer/track-subtitle.ts +0 -16
  117. package/src/modules/cache-manager.ts +0 -10
  118. package/src/modules/decoder.ts +0 -548
  119. package/src/modules/error-handle.ts +0 -20
  120. package/src/modules/network.ts +0 -71
  121. package/src/modules/sentry-reporter.ts +0 -171
  122. package/src/proto/face_data.proto +0 -45
  123. package/src/proto/face_data_pb.js +0 -1297
  124. package/src/proto/protobuf.min.js +0 -8
  125. package/src/types/capability.ts +0 -24
  126. package/src/types/error.ts +0 -211
  127. package/src/types/event.ts +0 -38
  128. package/src/types/frame-data.ts +0 -121
  129. package/src/types/index.ts +0 -220
  130. package/src/types/render.ts +0 -18
  131. package/src/utils/DataInterface.ts +0 -746
  132. package/src/utils/GLDevice.ts +0 -286
  133. package/src/utils/GLPipeline.ts +0 -1293
  134. package/src/utils/GLPipelineDebugTools.ts +0 -174
  135. package/src/utils/Math.ts +0 -266
  136. package/src/utils/__tests__/capability-checker.test.ts +0 -159
  137. package/src/utils/audio-session.ts +0 -144
  138. package/src/utils/audio.ts +0 -44
  139. package/src/utils/blueimp-md5.d.ts +0 -3
  140. package/src/utils/capability-checker.ts +0 -762
  141. package/src/utils/encodeToken.ts +0 -115
  142. package/src/utils/face.ts +0 -29
  143. package/src/utils/float32-decoder.js +0 -130
  144. package/src/utils/fpsTracker.ts +0 -100
  145. package/src/utils/index.ts +0 -182
  146. package/src/utils/logger.js +0 -36
  147. package/src/utils/media-recorder-timestamp.ts +0 -79
  148. package/src/utils/pcmAnalyzer.ts +0 -154
  149. package/src/utils/perfermance.ts +0 -141
  150. package/src/utils/request.ts +0 -107
  151. package/src/utils/requestAnimateFrames.ts +0 -195
  152. package/src/utils/time.ts +0 -32
  153. package/src/utils/video-probe-asset.ts +0 -99
  154. package/src/view/DebugOverlay.ts +0 -409
  155. package/src/worker/streaming-video.ts +0 -4647
  156. /package/{dist → package-dist}/agent/index.cjs +0 -0
  157. /package/{dist → package-dist}/agent/index.umd.js +0 -0
package/dist/index.d.ts DELETED
@@ -1,251 +0,0 @@
1
- import { AvatarStatus, RenderState, IAvatarOptions, IInitParams, Layout, WalkConfig } from "./types/index";
2
- import { ISessionResponse, TDownloadProgress } from "./modules/ResourceManager";
3
- import Errors from './modules/error-handle';
4
- import './utils/logger.js';
5
- import { IBRAnimationGeneratorCharInfo_NN, unpackIBRAnimation, formatMJT } from './utils/DataInterface';
6
- import { getVertices, getWavefrontObjFromVertices, getPCATextures } from './utils/GLPipelineDebugTools';
7
- import { GLDevice } from './utils/GLDevice';
8
- import { GLPipeline } from './utils/GLPipeline';
9
- import { checkCapability } from './utils/capability-checker';
10
- export default class XmovAvatar {
11
- private options;
12
- private TAG;
13
- private el;
14
- private status;
15
- private resourceManager;
16
- private renderScheduler;
17
- private networkMonitor;
18
- private ttsa;
19
- private debugOverlay;
20
- private sentryReporter;
21
- /** 首帧 span 句柄(init 时启动,首次 BODY 帧到达时结束) */
22
- private firstFrameSpan;
23
- private _offlineTimer;
24
- private readonly _offlineInterval;
25
- private _env;
26
- private avatarCanvasVisible;
27
- private pendingInvisibleMode;
28
- private isInitialized;
29
- onStateChange: (state: string) => void;
30
- onDownloadProgress: TDownloadProgress | null;
31
- static IBRAnimationGeneratorCharInfo_NN: typeof IBRAnimationGeneratorCharInfo_NN;
32
- static unpackIBRAnimation: typeof unpackIBRAnimation;
33
- static formatMJT: typeof formatMJT;
34
- static getVertices: typeof getVertices;
35
- static getPCATextures: typeof getPCATextures;
36
- static getWavefrontObjFromVertices: typeof getWavefrontObjFromVertices;
37
- static GLDevice: typeof GLDevice;
38
- static GLPipeline: typeof GLPipeline;
39
- static checkCapability: typeof checkCapability;
40
- private boundVisibilityChange;
41
- private replayData;
42
- private startConnectTime;
43
- private connectSuccessTime;
44
- private sessionResTime;
45
- private charbinResTime;
46
- private isfirstReceive;
47
- private enableClientInterrupt;
48
- private retryCount;
49
- private retryTimer;
50
- private maxRetryCount;
51
- private retryRound;
52
- private maxRetryRound;
53
- private isRetrying;
54
- private isStartRetry;
55
- private destroyed;
56
- private incompleteInitializationCleanupPromise;
57
- private captureAudioCtx;
58
- private captureWorklet;
59
- private captureSource;
60
- private captureSetupPromise;
61
- private captureLastSpeechId;
62
- private restartPlaybackCaptureImpl;
63
- private captureEncodeQueue;
64
- private captureGeneration;
65
- private pcmCaptureLastSpeechId;
66
- private pcmCaptureFirstChunk;
67
- private pcmWebMEncoder;
68
- private mediaRecorderEncoder;
69
- private pcmCaptureMode;
70
- private pcmEncodeId;
71
- private networkInfo;
72
- private mediaRecorder;
73
- private recordedChunks;
74
- private stream;
75
- private _isClientMode;
76
- private _streamingClient;
77
- private _videoPlayer;
78
- private _eventDispatcher;
79
- private _apiForwarder;
80
- private _clientOnDownloadProgress;
81
- private _pendingInit;
82
- private _pendingInitConfig;
83
- private _clientSessionId;
84
- constructor(options: IAvatarOptions);
85
- /**
86
- * 创建 Sentry 错误上报实例(编译时常量 ENABLE_SENTRY + 运行时 sentry.enabled 双重控制)。
87
- * 放在构造函数内完成:onMessage 的早期分支(无网络 / 容器不存在 / 能力检查失败)都发生在其后。
88
- */
89
- private initSentryReporter;
90
- /**
91
- * 释放 Sentry 客户端(内部会 flush 未发送的事件)。
92
- * 用于「实例确定不可用」的提前退出路径,避免业务反复重试创建时残留多个 client。
93
- */
94
- private disposeSentryReporter;
95
- getStatus(): AvatarStatus | -1;
96
- /**
97
- * 初始化是否完成(progress === 100)
98
- * 供 TTSA 重连恢复时判断是否可提前恢复在线状态
99
- */
100
- getIsInitialized(): boolean;
101
- get businessENV(): string;
102
- getUniqueSpeakId(): string;
103
- private initializeSDK;
104
- /**
105
- * 薄客户端模式初始化:创建容器、StreamingClient、VideoPlayer、EventDispatcher、APIForwarder
106
- */
107
- private initializeClient;
108
- private renderFrameCallback;
109
- init(params: IInitParams): Promise<void>;
110
- protected initializeSession(params: IInitParams): Promise<ISessionResponse | null | undefined>;
111
- /**
112
- * 初始化音频捕获(MSE 模式)
113
- * 通过 AudioContext.createMediaElementSource 接管 <audio> 元素输出,
114
- * 按 1600 samples 分桶后使用 WebCodecs 编码为 opus (WebM 容器),
115
- * 并回调给业务侧用于 ASR 回声消除(AEC)。
116
- *
117
- * 架构:
118
- * - AudioWorklet 负责 100ms 分桶和静音检测
119
- * - WebCodecs AudioEncoder + WebMMuxer 负责 opus/WebM 编码
120
- * - 每次 speak 会话的首段音频自动包含 WebM 容器头(isFirstChunk=true)
121
- *
122
- * 注意:
123
- * - createMediaElementSource 对同一个 audio 元素只能调用一次
124
- * - 接管后必须手动 connect 到 destination,否则音频不会播放
125
- * - MSE 播放器 stop 时只销毁 MediaSource,audio 元素不变,捕获绑定不受影响
126
- */
127
- protected setAudioPlaybackDataHandler(handler?: IAvatarOptions["onAudioPlaybackData"]): void;
128
- protected restartAudioPlaybackCapture(): void;
129
- protected enableAudioPlaybackCapture(): Promise<void>;
130
- private setupAudioCapture;
131
- /**
132
- * 初始化 PCM 模式音频捕获(raw_audio=true 时使用)
133
- * 通过 PCMAudioPlayer 的 capture worklet 拦截音频输出,
134
- * 经 WebCodecs 或 MediaRecorder 编码为 WebM/Opus 后回调给业务侧
135
- */
136
- private setupPCMCapture;
137
- visibilitychange(): void;
138
- setReplayData(data: any): void;
139
- handleReplaySend(frame: number): void;
140
- private connectTtsa;
141
- protected start(): void;
142
- protected onTtsaReady(_sessionInfo?: ISessionResponse): void;
143
- private _reload;
144
- protected onSessionReloaded(_sessionInfo: ISessionResponse): Promise<void>;
145
- protected onSessionReloadExhausted(_error?: unknown): void;
146
- protected restartSessionForTransport(reason: string): Promise<void>;
147
- protected cancelSessionRestart(): void;
148
- reloadSuccess(): void;
149
- protected stop(): Promise<void>;
150
- private handleBeforeUnload;
151
- isDestroyed(): boolean;
152
- destroyClient(): Promise<void>;
153
- destroy(stop_reason?: string): Promise<void>;
154
- protected disconnectClientForDestroy(stopReason: string): Promise<void>;
155
- idle(): void;
156
- listen(): void;
157
- think(): void;
158
- interactiveidle(): void;
159
- speak(ssml: string, is_start?: boolean, is_end?: boolean, extra?: {
160
- client_speak_id: string;
161
- client_frame: number;
162
- }): string | undefined;
163
- private speakInternal;
164
- setOffsetFrame(offsetFrame: number): void;
165
- syncTimestamp(): void;
166
- /**
167
- * 通知后端进入隐身模式
168
- */
169
- private notifyEnterInvisibleMode;
170
- /**
171
- * 通知后端退出隐身模式
172
- */
173
- private notifyExitInvisibleMode;
174
- setVolume(volume: number): void;
175
- getSessionId(): string | undefined;
176
- showDebugInfo(): void;
177
- hideDebugInfo(): void;
178
- changeAvatarVisible(visible: boolean): void;
179
- /**
180
- * 在初始化未完成时清理所有已初始化的资源
181
- * @param reason 清理原因
182
- */
183
- protected cleanupBeforeInitComplete(reason: string): Promise<void>;
184
- protected reportInitializationFailure(message: string, cause?: unknown): void;
185
- private offlineHandle;
186
- stopSessionFromSocket(reason: string): Promise<void>;
187
- offlineMode(): void;
188
- onlineMode(): void;
189
- onMessage(params: Parameters<typeof Errors>[0]): void;
190
- onStatusChange(status: AvatarStatus): void;
191
- /**
192
- * 切换隐身模式(暂停/恢复音视频实时渲染)
193
- */
194
- switchInvisibleMode(): void;
195
- private setInvisibleMode;
196
- getPendingInvisibleMode(): boolean;
197
- /**
198
- * 获取当前渲染状态
199
- */
200
- getRenderState(): RenderState;
201
- changeLayout(layout: Layout): void;
202
- changeWalkConfig(walkConfig: WalkConfig): void;
203
- interrupt(type: string): number;
204
- private triggerReconnect;
205
- reStartSession(): void;
206
- private _retryImpl;
207
- private clearAllRetryTimers;
208
- private resetRetryState;
209
- seekToFrame(frame: number): void;
210
- startRecoder(): Promise<void>;
211
- stopRecoder(): void;
212
- exportVideo(): void;
213
- getOptions(): IAvatarOptions;
214
- /**
215
- * [测试用] 模拟 WebGL 上下文丢失
216
- * 用于测试分阶段恢复策略是否正常工作
217
- *
218
- * @param restoreAfterMs 自动恢复上下文的延迟时间(毫秒),默认 5000ms
219
- * @param forceFail 强制恢复失败(用于测试 medium/full 阶段的升级逻辑)
220
- *
221
- * @example
222
- * // 在浏览器控制台执行:
223
- * avatar.simulateContextLoss(5000); // 模拟丢失,5秒后自动恢复
224
- * avatar.simulateContextLoss(0, true); // 模拟丢失,不自动恢复(测试升级逻辑)
225
- */
226
- simulateContextLoss(restoreAfterMs?: number, forceFail?: boolean): void;
227
- /**
228
- * [测试用] 获取当前 WebGL 上下文恢复状态
229
- */
230
- getRecoveryStatus(): {
231
- isRecovering: boolean;
232
- stage: string;
233
- attempts: number;
234
- maxAttempts: number;
235
- isUsingReducedResolution: boolean;
236
- } | null;
237
- /**
238
- * [测试用] 批量测试分阶段恢复
239
- * 依次触发多次上下文丢失,观察各阶段的恢复情况
240
- */
241
- testStagedRecovery(): Promise<void>;
242
- /**
243
- * 手动重启 WebGL:创建新 canvas + 新 GLDevice + 新 GLPipeline
244
- * 用于分阶段恢复全部失败后的手动恢复
245
- * @returns 是否成功
246
- *
247
- * @example
248
- * const ok = avatar.restartWebGL();
249
- */
250
- restartWebGL(): boolean;
251
- }