@xmov/avatar 2.1.1 → 2.1.2
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/dist/control/RenderScheduler.d.ts +0 -7
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -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/package.json +1 -1
- package/src/control/RenderScheduler.ts +1 -12
- package/src/encoding/webcodec-opus-encoder.ts +1 -1
- package/src/index.ts +5 -14
package/package.json
CHANGED
|
@@ -636,7 +636,6 @@ export default class RenderScheduler {
|
|
|
636
636
|
|
|
637
637
|
// 1. 暂停动画帧循环(保留当前帧索引)
|
|
638
638
|
this.frameAnimationController?.pause();
|
|
639
|
-
this.decoder.abort();
|
|
640
639
|
|
|
641
640
|
// 2. 停止并清空音频播放(丢弃所有剩余的音频数据)
|
|
642
641
|
this.audioRenderer.stop(-1); // 传入 -1 清空所有音频数据
|
|
@@ -674,7 +673,7 @@ export default class RenderScheduler {
|
|
|
674
673
|
// 4. 恢复后立即进入渲染中状态
|
|
675
674
|
this.renderState = RenderState.resumed;
|
|
676
675
|
this.onRenderChange(this.renderState);
|
|
677
|
-
(window as any).avatarSDKLogger?.log(this.TAG, ' 渲染已恢复,状态: this.currentSpeechId===');
|
|
676
|
+
(window as any).avatarSDKLogger?.log(this.TAG, ' 渲染已恢复,状态: this.currentSpeechId===' + this.currentSpeechId);
|
|
678
677
|
}
|
|
679
678
|
|
|
680
679
|
/**
|
|
@@ -897,16 +896,6 @@ export default class RenderScheduler {
|
|
|
897
896
|
this.audioRenderer.resume();
|
|
898
897
|
}
|
|
899
898
|
|
|
900
|
-
/**
|
|
901
|
-
* app 切后台时暂停音频并清空对齐状态(复用断网离线时的 pause())
|
|
902
|
-
* 不能保留缓存续播:Android 后台视频帧号持续递增而音频停留在暂停位置,
|
|
903
|
-
* 恢复后音画基准脱节;且后台期间可能下发新 speak 数据,旧缓存与新 sf 冲突。
|
|
904
|
-
* 恢复后依赖新下发音频的 sf 作为 firstFrameIndex 重新对齐
|
|
905
|
-
*/
|
|
906
|
-
pauseForBackground() {
|
|
907
|
-
this.audioRenderer.pause();
|
|
908
|
-
}
|
|
909
|
-
|
|
910
899
|
/**
|
|
911
900
|
* 设置数字人canvas的显隐状态
|
|
912
901
|
* @param visible 是否可见
|
package/src/index.ts
CHANGED
|
@@ -1051,28 +1051,19 @@ export default class XmovAvatar {
|
|
|
1051
1051
|
|
|
1052
1052
|
visibilitychange() {
|
|
1053
1053
|
if (document.hidden) {
|
|
1054
|
-
|
|
1055
|
-
// 仅渲染中暂停(resumeRender 要求 paused 状态才能恢复),
|
|
1056
|
-
// 其他状态(init/stopped/隐身 paused)只停止音频,避免强制暂停后无法恢复
|
|
1057
|
-
const rs = this.renderScheduler?.getRenderState();
|
|
1058
|
-
if (rs === RenderState.rendering || rs === RenderState.resumed) {
|
|
1059
|
-
this.renderScheduler?.pauseRender();
|
|
1060
|
-
} else {
|
|
1061
|
-
this.renderScheduler?.pauseForBackground();
|
|
1062
|
-
}
|
|
1054
|
+
this.setVolume(0);
|
|
1063
1055
|
} else {
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
this.renderScheduler?.resumeRender();
|
|
1067
|
-
} else if (this.ttsa?.getStatus()) {
|
|
1068
|
-
// 未暂停但连接正常:兜底同步解帧队列
|
|
1056
|
+
if (this.ttsa?.getStatus()) {
|
|
1057
|
+
// 连接正常:兜底同步解帧队列
|
|
1069
1058
|
this.renderScheduler?.forceSyncDecoder();
|
|
1059
|
+
this.setVolume(1);
|
|
1070
1060
|
}
|
|
1071
1061
|
// WebSocket 在后台断开且已进入离线模式,网络可用则主动触发重连,
|
|
1072
1062
|
// 否则用户切回前台续播时无响应且无任何报错
|
|
1073
1063
|
if (!this.ttsa?.getStatus() && this.status === AvatarStatus.offline && NetworkMonitor.ONLINE) {
|
|
1074
1064
|
(window as any).avatarSDKLogger.warn(this.TAG, "切回前台发现连接已断开,主动触发重连");
|
|
1075
1065
|
this.onlineMode();
|
|
1066
|
+
this.setVolume(1);
|
|
1076
1067
|
}
|
|
1077
1068
|
// tab 切换回来时,恢复音频捕获的 AudioContext
|
|
1078
1069
|
if (this.captureAudioCtx && this.captureAudioCtx.state === 'suspended') {
|