@xmaxai/web-sdk 1.0.9 → 1.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 +232 -64
- package/dist/{TrajectoryEffectRendering-C7E2KJbV.d.cts → TrajectoryEffectRendering-BdSJxHQw.d.cts} +24 -33
- package/dist/{TrajectoryEffectRendering-C7E2KJbV.d.ts → TrajectoryEffectRendering-BdSJxHQw.d.ts} +24 -33
- package/dist/chunk-IJVTTKBG.js +14591 -0
- package/dist/chunk-IJVTTKBG.js.map +1 -0
- package/dist/chunk-WJOPIHWW.cjs +14591 -0
- package/dist/chunk-WJOPIHWW.cjs.map +1 -0
- package/dist/index.cjs +10 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +929 -332
- package/dist/index.d.ts +929 -332
- package/dist/index.js +19 -12
- package/dist/react/index.cjs +15 -10
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +17 -6
- package/dist/react/index.d.ts +17 -6
- package/dist/react/index.js +18 -13
- package/dist/react/index.js.map +1 -1
- package/package.json +9 -10
- package/dist/RecordingProcessor-4TP5NICO.cjs +0 -211
- package/dist/RecordingProcessor-4TP5NICO.cjs.map +0 -1
- package/dist/RecordingProcessor-ZSBJFF4J.js +0 -211
- package/dist/RecordingProcessor-ZSBJFF4J.js.map +0 -1
- package/dist/chunk-4DE2IREA.cjs +0 -8
- package/dist/chunk-4DE2IREA.cjs.map +0 -1
- package/dist/chunk-ILZL4W2G.js +0 -14716
- package/dist/chunk-ILZL4W2G.js.map +0 -1
- package/dist/chunk-KROY2O4A.cjs +0 -14716
- package/dist/chunk-KROY2O4A.cjs.map +0 -1
- package/dist/chunk-V6TY7KAL.js +0 -8
- package/dist/chunk-V6TY7KAL.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CameraPosition,
|
|
3
|
+
DefaultTrajectoryEffectRenderer,
|
|
3
4
|
MediaService,
|
|
4
5
|
NonRealtimeQuality,
|
|
5
6
|
NonRealtimeTaskError,
|
|
6
7
|
NonRealtimeTaskStatus,
|
|
8
|
+
RealtimeCameraPreset,
|
|
7
9
|
RealtimeConfiguration,
|
|
8
10
|
RealtimeConnectionState,
|
|
9
11
|
RealtimeContext,
|
|
10
12
|
RealtimeMediaStream,
|
|
11
13
|
RealtimeModel,
|
|
14
|
+
RealtimeNetworkQualityLevel,
|
|
15
|
+
RealtimeQualityLevel,
|
|
12
16
|
RealtimeReason,
|
|
13
|
-
RealtimeRecordingEventType,
|
|
14
|
-
RealtimeRecordingFinishReason,
|
|
15
17
|
RealtimeState,
|
|
16
18
|
RealtimeVideoEncoderPreference,
|
|
17
19
|
RealtimeVideoFormat,
|
|
18
|
-
RealtimeVideoSampleMethod,
|
|
19
20
|
RealtimeVideoTrack,
|
|
20
21
|
RtcProvider,
|
|
21
22
|
StorageService,
|
|
@@ -28,33 +29,36 @@ import {
|
|
|
28
29
|
XmaxErrorCode,
|
|
29
30
|
XmaxLogger,
|
|
30
31
|
XmaxLoggerOption,
|
|
32
|
+
XmaxRealtimeDualVideoView,
|
|
31
33
|
XmaxRealtimeVideoView,
|
|
32
|
-
XmaxVideoView,
|
|
33
34
|
apiBaseURL,
|
|
35
|
+
cameraPresetSize,
|
|
34
36
|
defaultCameraVideoFormat,
|
|
35
37
|
defaultFrameRate,
|
|
36
38
|
modelDisplayName,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
realtimeApiBaseURL,
|
|
40
|
+
supportedRtcProviders,
|
|
41
|
+
supportedVideoFormats
|
|
42
|
+
} from "./chunk-IJVTTKBG.js";
|
|
40
43
|
export {
|
|
41
44
|
CameraPosition,
|
|
45
|
+
DefaultTrajectoryEffectRenderer,
|
|
42
46
|
MediaService,
|
|
43
47
|
NonRealtimeQuality,
|
|
44
48
|
NonRealtimeTaskError,
|
|
45
49
|
NonRealtimeTaskStatus,
|
|
50
|
+
RealtimeCameraPreset,
|
|
46
51
|
RealtimeConfiguration,
|
|
47
52
|
RealtimeConnectionState,
|
|
48
53
|
RealtimeContext,
|
|
49
54
|
RealtimeMediaStream,
|
|
50
55
|
RealtimeModel,
|
|
56
|
+
RealtimeNetworkQualityLevel,
|
|
57
|
+
RealtimeQualityLevel,
|
|
51
58
|
RealtimeReason,
|
|
52
|
-
RealtimeRecordingEventType,
|
|
53
|
-
RealtimeRecordingFinishReason,
|
|
54
59
|
RealtimeState,
|
|
55
60
|
RealtimeVideoEncoderPreference,
|
|
56
61
|
RealtimeVideoFormat,
|
|
57
|
-
RealtimeVideoSampleMethod,
|
|
58
62
|
RealtimeVideoTrack,
|
|
59
63
|
RtcProvider,
|
|
60
64
|
StorageService,
|
|
@@ -67,12 +71,15 @@ export {
|
|
|
67
71
|
XmaxErrorCode,
|
|
68
72
|
XmaxLogger,
|
|
69
73
|
XmaxLoggerOption,
|
|
74
|
+
XmaxRealtimeDualVideoView,
|
|
70
75
|
XmaxRealtimeVideoView,
|
|
71
|
-
XmaxVideoView,
|
|
72
76
|
apiBaseURL,
|
|
77
|
+
cameraPresetSize,
|
|
73
78
|
defaultCameraVideoFormat,
|
|
74
79
|
defaultFrameRate,
|
|
75
80
|
modelDisplayName,
|
|
76
|
-
|
|
81
|
+
realtimeApiBaseURL,
|
|
82
|
+
supportedRtcProviders,
|
|
83
|
+
supportedVideoFormats
|
|
77
84
|
};
|
|
78
85
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.cjs
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
require('../chunk-4DE2IREA.cjs');
|
|
4
|
+
var _chunkWJOPIHWWcjs = require('../chunk-WJOPIHWW.cjs');
|
|
6
5
|
|
|
7
|
-
// src/react/
|
|
6
|
+
// src/react/XmaxRealtimeDualVideo.tsx
|
|
8
7
|
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
var _react = require('react');
|
|
12
11
|
var _jsxruntime = require('react/jsx-runtime');
|
|
13
|
-
function
|
|
12
|
+
function XmaxRealtimeDualVideo(props) {
|
|
14
13
|
const containerRef = _react.useRef.call(void 0, null);
|
|
15
14
|
const viewRef = _react.useRef.call(void 0, void 0);
|
|
16
15
|
_react.useEffect.call(void 0, () => {
|
|
@@ -18,7 +17,7 @@ function XmaxRealtimeVideo(props) {
|
|
|
18
17
|
if (!container) {
|
|
19
18
|
return;
|
|
20
19
|
}
|
|
21
|
-
const view = new (0,
|
|
20
|
+
const view = new (0, _chunkWJOPIHWWcjs.XmaxRealtimeDualVideoView)({ remoteVideoFadeInDuration: props.remoteVideoFadeInDuration });
|
|
22
21
|
view.element.style.width = "100%";
|
|
23
22
|
view.element.style.height = "100%";
|
|
24
23
|
view.attach(container);
|
|
@@ -30,6 +29,11 @@ function XmaxRealtimeVideo(props) {
|
|
|
30
29
|
view.detach();
|
|
31
30
|
};
|
|
32
31
|
}, []);
|
|
32
|
+
_react.useEffect.call(void 0, () => {
|
|
33
|
+
if (viewRef.current) {
|
|
34
|
+
viewRef.current.remoteVideoFadeInDuration = _nullishCoalesce(props.remoteVideoFadeInDuration, () => ( 0.3));
|
|
35
|
+
}
|
|
36
|
+
}, [props.remoteVideoFadeInDuration]);
|
|
33
37
|
_react.useEffect.call(void 0, () => {
|
|
34
38
|
const view = viewRef.current;
|
|
35
39
|
if (view) {
|
|
@@ -68,13 +72,13 @@ function XmaxRealtimeVideo(props) {
|
|
|
68
72
|
);
|
|
69
73
|
}
|
|
70
74
|
|
|
71
|
-
// src/react/
|
|
75
|
+
// src/react/XmaxRealtimeVideo.tsx
|
|
72
76
|
|
|
73
77
|
|
|
74
78
|
|
|
75
79
|
|
|
76
80
|
|
|
77
|
-
function
|
|
81
|
+
function XmaxRealtimeVideo(props) {
|
|
78
82
|
const containerRef = _react.useRef.call(void 0, null);
|
|
79
83
|
const viewRef = _react.useRef.call(void 0, void 0);
|
|
80
84
|
_react.useEffect.call(void 0, () => {
|
|
@@ -82,7 +86,7 @@ function XmaxVideo(props) {
|
|
|
82
86
|
if (!container) {
|
|
83
87
|
return;
|
|
84
88
|
}
|
|
85
|
-
const view = new (0,
|
|
89
|
+
const view = new (0, _chunkWJOPIHWWcjs.XmaxRealtimeVideoView)();
|
|
86
90
|
view.element.style.width = "100%";
|
|
87
91
|
view.element.style.height = "100%";
|
|
88
92
|
view.attach(container);
|
|
@@ -94,7 +98,8 @@ function XmaxVideo(props) {
|
|
|
94
98
|
};
|
|
95
99
|
}, []);
|
|
96
100
|
_react.useEffect.call(void 0, () => {
|
|
97
|
-
if (viewRef.current)
|
|
101
|
+
if (viewRef.current)
|
|
102
|
+
viewRef.current.renderStatisticsHandler = props.onRenderStatistics;
|
|
98
103
|
}, [props.onRenderStatistics]);
|
|
99
104
|
_react.useEffect.call(void 0, () => {
|
|
100
105
|
const view = viewRef.current;
|
|
@@ -136,5 +141,5 @@ function XmaxVideo(props) {
|
|
|
136
141
|
|
|
137
142
|
|
|
138
143
|
|
|
139
|
-
exports.
|
|
144
|
+
exports.XmaxRealtimeDualVideo = XmaxRealtimeDualVideo; exports.XmaxRealtimeVideo = XmaxRealtimeVideo;
|
|
140
145
|
//# sourceMappingURL=index.cjs.map
|
package/dist/react/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/private/var/folders/5j/p3g3j18x2w3byrl5wtnk94tc0000gn/T/xmax-web-release-Zggzaq/source/packages/xmax-sdk/dist/react/index.cjs","../../src/react/XmaxRealtimeVideo.tsx","../../src/react/XmaxVideo.tsx"],"names":["useRef","useEffect","jsx"],"mappings":"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","file":"/private/var/folders/5j/p3g3j18x2w3byrl5wtnk94tc0000gn/T/xmax-web-release-Zggzaq/source/packages/xmax-sdk/dist/react/index.cjs","sourcesContent":[null,"import {\n VideoContentMode,\n XmaxRealtimeVideoView,\n type RealtimeVideoTrack,\n type TrajectoryEffectRendering,\n} from \"../index\";\nimport {\n useEffect,\n useRef,\n type CSSProperties,\n} from \"react\";\n\nexport interface XmaxRealtimeVideoProps {\n /**\n * 当前显示的本地视频轨道。\n */\n localTrack?: RealtimeVideoTrack;\n\n /**\n * 当前显示的远端生成视频轨道;首帧提交后自动渐入。\n */\n remoteTrack?: RealtimeVideoTrack;\n\n /**\n * 视频内容在容器中的显示模式,默认 fill。\n */\n videoContentMode?: VideoContentMode;\n\n /**\n * 容器类名。\n */\n className?: string;\n\n /**\n * 是否允许远端轨迹交互,默认 true;本地轨道不参与。\n */\n isInteractionEnabled?: boolean;\n\n /**\n * 自定义轨迹视觉效果,不传时使用默认效果;一个实例仅供一个视图使用。\n */\n trajectoryRenderer?: TrajectoryEffectRendering;\n\n /**\n * 容器样式。\n */\n style?: CSSProperties;\n}\n\n/**\n * 本地预览和远端生成画面自动切换的 React 组件。\n */\nexport function XmaxRealtimeVideo(props: XmaxRealtimeVideoProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const viewRef = useRef<XmaxRealtimeVideoView | undefined>(undefined);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const view = new XmaxRealtimeVideoView();\n view.element.style.width = \"100%\";\n view.element.style.height = \"100%\";\n view.attach(container);\n viewRef.current = view;\n return () => {\n viewRef.current = undefined;\n view.localTrack = undefined;\n view.remoteTrack = undefined;\n view.detach();\n };\n }, []);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view) {\n view.localTrack = props.localTrack;\n }\n }, [props.localTrack]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view) {\n view.remoteTrack = props.remoteTrack;\n }\n }, [props.remoteTrack]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view && props.videoContentMode) {\n view.videoContentMode = props.videoContentMode;\n }\n }, [props.videoContentMode]);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.isInteractionEnabled = props.isInteractionEnabled ?? true;\n }\n }, [props.isInteractionEnabled]);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.trajectoryRenderer = props.trajectoryRenderer;\n }\n }, [props.trajectoryRenderer]);\n\n return (\n <div\n ref={containerRef}\n className={props.className}\n style={{ position: \"relative\", overflow: \"hidden\", ...props.style }}\n />\n );\n}\n","import {\n VideoContentMode,\n XmaxVideoView,\n type RealtimeVideoTrack,\n type TrajectoryEffectRendering,\n type VideoRenderStatistics,\n} from \"../index\";\nimport {\n useEffect,\n useRef,\n type CSSProperties,\n} from \"react\";\n\nexport interface XmaxVideoProps {\n /**\n * 当前显示的视频轨道;置空时清空画面。\n */\n track?: RealtimeVideoTrack;\n\n /**\n * 视频内容在容器中的显示模式,默认 fill。\n */\n videoContentMode?: VideoContentMode;\n\n /**\n * 是否镜像显示(仅影响显示,不影响发布流)。\n */\n mirrored?: boolean;\n\n /**\n * 当前视图的呈现帧率统计;换流或卸载时清空,不受统计面板显示开关影响。\n */\n onRenderStatistics?: (statistics?: VideoRenderStatistics) => void;\n\n /**\n * 容器类名。\n */\n className?: string;\n\n /**\n * 是否允许远端轨迹交互,默认 true;本地轨道不参与。\n */\n isInteractionEnabled?: boolean;\n\n /**\n * 自定义轨迹视觉效果,不传时使用默认效果;一个实例仅供一个视图使用。\n */\n trajectoryRenderer?: TrajectoryEffectRendering;\n\n /**\n * 容器样式。\n */\n style?: CSSProperties;\n}\n\n/**\n * 单轨视频 React 组件:把一路视频轨渲染到容器。\n */\nexport function XmaxVideo(props: XmaxVideoProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const viewRef = useRef<XmaxVideoView | undefined>(undefined);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const view = new XmaxVideoView();\n view.element.style.width = \"100%\";\n view.element.style.height = \"100%\";\n view.attach(container);\n viewRef.current = view;\n return () => {\n viewRef.current = undefined;\n view.track = undefined;\n view.detach();\n };\n }, []);\n\n useEffect(() => {\n if (viewRef.current) viewRef.current.renderStatisticsHandler = props.onRenderStatistics;\n }, [props.onRenderStatistics]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view) {\n view.track = props.track;\n }\n }, [props.track]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view && props.videoContentMode) {\n view.videoContentMode = props.videoContentMode;\n }\n }, [props.videoContentMode]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view && props.mirrored !== undefined) {\n view.isMirrored = props.mirrored;\n }\n }, [props.mirrored]);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.isInteractionEnabled = props.isInteractionEnabled ?? true;\n }\n }, [props.isInteractionEnabled]);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.trajectoryRenderer = props.trajectoryRenderer;\n }\n }, [props.trajectoryRenderer]);\n\n return (\n <div\n ref={containerRef}\n className={props.className}\n style={{ position: \"relative\", overflow: \"hidden\", ...props.style }}\n />\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/Users/xmax.ai/dev/Xmax/Web/XmaxSDK/packages/xmax-sdk/dist/react/index.cjs","../../src/react/XmaxRealtimeDualVideo.tsx","../../src/react/XmaxRealtimeVideo.tsx"],"names":["useRef","useEffect","jsx"],"mappings":"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","file":"/Users/xmax.ai/dev/Xmax/Web/XmaxSDK/packages/xmax-sdk/dist/react/index.cjs","sourcesContent":[null,"//\n// XmaxRealtimeDualVideo.tsx\n// XmaxSDK\n//\n// Author: 翁跃庭 (Yueting Weng)\n// GitHub: https://github.com/Xmax-AI/XmaxSDK-Web\n//\n// Copyright (c) 2026 XMAX.AI PTE. LTD.\n//\n\nimport {\n VideoContentMode,\n XmaxRealtimeDualVideoView,\n type RealtimeVideoTrack,\n type TrajectoryEffectRendering,\n} from \"../index\";\nimport {\n useEffect,\n useRef,\n type CSSProperties,\n} from \"react\";\n\n/**\n * 双轨实时视频 React 组件的本地、远端轨道及显示选项。\n */\nexport interface XmaxRealtimeDualVideoProps {\n\n /**\n * 当前显示的本地视频轨道。\n */\n localTrack?: RealtimeVideoTrack;\n\n /**\n * 当前显示的远端生成视频轨道;首帧提交后自动渐入。\n */\n remoteTrack?: RealtimeVideoTrack;\n\n /**\n * 远端画面的渐入时长,单位为秒,默认 0.3;非正数或非有限值关闭动画,不跳过渲染预热。\n */\n remoteVideoFadeInDuration?: number;\n\n /**\n * 视频内容在容器中的显示模式,默认 fill。\n */\n videoContentMode?: VideoContentMode;\n\n /**\n * 容器类名。\n */\n className?: string;\n\n /**\n * 是否允许远端轨迹交互,默认 true;本地轨道不参与。\n */\n isInteractionEnabled?: boolean;\n\n /**\n * 自定义轨迹视觉效果,不传时使用默认效果;一个实例仅供一个视图使用。\n */\n trajectoryRenderer?: TrajectoryEffectRendering;\n\n /**\n * 容器样式。\n */\n style?: CSSProperties;\n}\n\n/**\n * 本地预览和远端生成画面自动切换的 React 组件。\n */\nexport function XmaxRealtimeDualVideo(\n props: XmaxRealtimeDualVideoProps\n) {\n const containerRef = useRef<HTMLDivElement>(null);\n const viewRef = useRef<XmaxRealtimeDualVideoView | undefined>(undefined);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const view = new XmaxRealtimeDualVideoView({ remoteVideoFadeInDuration: props.remoteVideoFadeInDuration });\n view.element.style.width = \"100%\";\n view.element.style.height = \"100%\";\n view.attach(container);\n viewRef.current = view;\n return () => {\n viewRef.current = undefined;\n view.localTrack = undefined;\n view.remoteTrack = undefined;\n view.detach();\n };\n }, []);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.remoteVideoFadeInDuration = props.remoteVideoFadeInDuration ?? 0.3;\n }\n }, [props.remoteVideoFadeInDuration]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view) {\n view.localTrack = props.localTrack;\n }\n }, [props.localTrack]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view) {\n view.remoteTrack = props.remoteTrack;\n }\n }, [props.remoteTrack]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view && props.videoContentMode) {\n view.videoContentMode = props.videoContentMode;\n }\n }, [props.videoContentMode]);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.isInteractionEnabled = props.isInteractionEnabled ?? true;\n }\n }, [props.isInteractionEnabled]);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.trajectoryRenderer = props.trajectoryRenderer;\n }\n }, [props.trajectoryRenderer]);\n\n return (\n <div\n ref={containerRef}\n className={props.className}\n style={{ position: \"relative\", overflow: \"hidden\", ...props.style }}\n />\n );\n}\n","//\n// XmaxRealtimeVideo.tsx\n// XmaxSDK\n//\n// Author: 翁跃庭 (Yueting Weng)\n// GitHub: https://github.com/Xmax-AI/XmaxSDK-Web\n//\n// Copyright (c) 2026 XMAX.AI PTE. LTD.\n//\n\nimport {\n VideoContentMode,\n XmaxRealtimeVideoView,\n type RealtimeVideoTrack,\n type TrajectoryEffectRendering,\n type VideoRenderStatistics,\n} from \"../index\";\nimport {\n useEffect,\n useRef,\n type CSSProperties,\n} from \"react\";\n\n/**\n * 单轨实时视频 React 组件的轨道、显示和交互选项。\n */\nexport interface XmaxRealtimeVideoProps {\n\n /**\n * 当前显示的视频轨道;置空时清空画面。\n */\n track?: RealtimeVideoTrack;\n\n /**\n * 视频内容在容器中的显示模式,默认 fill。\n */\n videoContentMode?: VideoContentMode;\n\n /**\n * 是否镜像显示(仅影响显示,不影响发布流)。\n */\n mirrored?: boolean;\n\n /**\n * 当前视图的呈现帧率统计;换流或卸载时清空,不受统计面板显示开关影响。\n */\n onRenderStatistics?: (\n statistics?: VideoRenderStatistics\n ) => void;\n\n /**\n * 容器类名。\n */\n className?: string;\n\n /**\n * 是否允许远端轨迹交互,默认 true;本地轨道不参与。\n */\n isInteractionEnabled?: boolean;\n\n /**\n * 自定义轨迹视觉效果,不传时使用默认效果;一个实例仅供一个视图使用。\n */\n trajectoryRenderer?: TrajectoryEffectRendering;\n\n /**\n * 容器样式。\n */\n style?: CSSProperties;\n}\n\n/**\n * 单轨视频 React 组件:把一路视频轨渲染到容器。\n * SDK 远端轨道自动预热 1000 ms 后渐入,本地预览直接显示。\n */\nexport function XmaxRealtimeVideo(\n props: XmaxRealtimeVideoProps\n) {\n const containerRef = useRef<HTMLDivElement>(null);\n const viewRef = useRef<XmaxRealtimeVideoView | undefined>(undefined);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const view = new XmaxRealtimeVideoView();\n view.element.style.width = \"100%\";\n view.element.style.height = \"100%\";\n view.attach(container);\n viewRef.current = view;\n return () => {\n viewRef.current = undefined;\n view.track = undefined;\n view.detach();\n };\n }, []);\n\n useEffect(() => {\n if (viewRef.current)\n viewRef.current.renderStatisticsHandler = props.onRenderStatistics;\n }, [props.onRenderStatistics]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view) {\n view.track = props.track;\n }\n }, [props.track]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view && props.videoContentMode) {\n view.videoContentMode = props.videoContentMode;\n }\n }, [props.videoContentMode]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view && props.mirrored !== undefined) {\n view.isMirrored = props.mirrored;\n }\n }, [props.mirrored]);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.isInteractionEnabled = props.isInteractionEnabled ?? true;\n }\n }, [props.isInteractionEnabled]);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.trajectoryRenderer = props.trajectoryRenderer;\n }\n }, [props.trajectoryRenderer]);\n\n return (\n <div\n ref={containerRef}\n className={props.className}\n style={{ position: \"relative\", overflow: \"hidden\", ...props.style }}\n />\n );\n}\n"]}
|
package/dist/react/index.d.cts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { CSSProperties } from 'react';
|
|
3
|
-
import { a as RealtimeVideoTrack, V as VideoContentMode, T as TrajectoryEffectRendering, b as VideoRenderStatistics } from '../TrajectoryEffectRendering-
|
|
3
|
+
import { a as RealtimeVideoTrack, V as VideoContentMode, T as TrajectoryEffectRendering, b as VideoRenderStatistics } from '../TrajectoryEffectRendering-BdSJxHQw.cjs';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* 双轨实时视频 React 组件的本地、远端轨道及显示选项。
|
|
7
|
+
*/
|
|
8
|
+
interface XmaxRealtimeDualVideoProps {
|
|
6
9
|
/**
|
|
7
10
|
* 当前显示的本地视频轨道。
|
|
8
11
|
*/
|
|
@@ -11,6 +14,10 @@ interface XmaxRealtimeVideoProps {
|
|
|
11
14
|
* 当前显示的远端生成视频轨道;首帧提交后自动渐入。
|
|
12
15
|
*/
|
|
13
16
|
remoteTrack?: RealtimeVideoTrack;
|
|
17
|
+
/**
|
|
18
|
+
* 远端画面的渐入时长,单位为秒,默认 0.3;非正数或非有限值关闭动画,不跳过渲染预热。
|
|
19
|
+
*/
|
|
20
|
+
remoteVideoFadeInDuration?: number;
|
|
14
21
|
/**
|
|
15
22
|
* 视频内容在容器中的显示模式,默认 fill。
|
|
16
23
|
*/
|
|
@@ -35,9 +42,12 @@ interface XmaxRealtimeVideoProps {
|
|
|
35
42
|
/**
|
|
36
43
|
* 本地预览和远端生成画面自动切换的 React 组件。
|
|
37
44
|
*/
|
|
38
|
-
declare function
|
|
45
|
+
declare function XmaxRealtimeDualVideo(props: XmaxRealtimeDualVideoProps): react.JSX.Element;
|
|
39
46
|
|
|
40
|
-
|
|
47
|
+
/**
|
|
48
|
+
* 单轨实时视频 React 组件的轨道、显示和交互选项。
|
|
49
|
+
*/
|
|
50
|
+
interface XmaxRealtimeVideoProps {
|
|
41
51
|
/**
|
|
42
52
|
* 当前显示的视频轨道;置空时清空画面。
|
|
43
53
|
*/
|
|
@@ -73,7 +83,8 @@ interface XmaxVideoProps {
|
|
|
73
83
|
}
|
|
74
84
|
/**
|
|
75
85
|
* 单轨视频 React 组件:把一路视频轨渲染到容器。
|
|
86
|
+
* SDK 远端轨道自动预热 1000 ms 后渐入,本地预览直接显示。
|
|
76
87
|
*/
|
|
77
|
-
declare function
|
|
88
|
+
declare function XmaxRealtimeVideo(props: XmaxRealtimeVideoProps): react.JSX.Element;
|
|
78
89
|
|
|
79
|
-
export {
|
|
90
|
+
export { XmaxRealtimeDualVideo, type XmaxRealtimeDualVideoProps, XmaxRealtimeVideo, type XmaxRealtimeVideoProps };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { CSSProperties } from 'react';
|
|
3
|
-
import { a as RealtimeVideoTrack, V as VideoContentMode, T as TrajectoryEffectRendering, b as VideoRenderStatistics } from '../TrajectoryEffectRendering-
|
|
3
|
+
import { a as RealtimeVideoTrack, V as VideoContentMode, T as TrajectoryEffectRendering, b as VideoRenderStatistics } from '../TrajectoryEffectRendering-BdSJxHQw.js';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* 双轨实时视频 React 组件的本地、远端轨道及显示选项。
|
|
7
|
+
*/
|
|
8
|
+
interface XmaxRealtimeDualVideoProps {
|
|
6
9
|
/**
|
|
7
10
|
* 当前显示的本地视频轨道。
|
|
8
11
|
*/
|
|
@@ -11,6 +14,10 @@ interface XmaxRealtimeVideoProps {
|
|
|
11
14
|
* 当前显示的远端生成视频轨道;首帧提交后自动渐入。
|
|
12
15
|
*/
|
|
13
16
|
remoteTrack?: RealtimeVideoTrack;
|
|
17
|
+
/**
|
|
18
|
+
* 远端画面的渐入时长,单位为秒,默认 0.3;非正数或非有限值关闭动画,不跳过渲染预热。
|
|
19
|
+
*/
|
|
20
|
+
remoteVideoFadeInDuration?: number;
|
|
14
21
|
/**
|
|
15
22
|
* 视频内容在容器中的显示模式,默认 fill。
|
|
16
23
|
*/
|
|
@@ -35,9 +42,12 @@ interface XmaxRealtimeVideoProps {
|
|
|
35
42
|
/**
|
|
36
43
|
* 本地预览和远端生成画面自动切换的 React 组件。
|
|
37
44
|
*/
|
|
38
|
-
declare function
|
|
45
|
+
declare function XmaxRealtimeDualVideo(props: XmaxRealtimeDualVideoProps): react.JSX.Element;
|
|
39
46
|
|
|
40
|
-
|
|
47
|
+
/**
|
|
48
|
+
* 单轨实时视频 React 组件的轨道、显示和交互选项。
|
|
49
|
+
*/
|
|
50
|
+
interface XmaxRealtimeVideoProps {
|
|
41
51
|
/**
|
|
42
52
|
* 当前显示的视频轨道;置空时清空画面。
|
|
43
53
|
*/
|
|
@@ -73,7 +83,8 @@ interface XmaxVideoProps {
|
|
|
73
83
|
}
|
|
74
84
|
/**
|
|
75
85
|
* 单轨视频 React 组件:把一路视频轨渲染到容器。
|
|
86
|
+
* SDK 远端轨道自动预热 1000 ms 后渐入,本地预览直接显示。
|
|
76
87
|
*/
|
|
77
|
-
declare function
|
|
88
|
+
declare function XmaxRealtimeVideo(props: XmaxRealtimeVideoProps): react.JSX.Element;
|
|
78
89
|
|
|
79
|
-
export {
|
|
90
|
+
export { XmaxRealtimeDualVideo, type XmaxRealtimeDualVideoProps, XmaxRealtimeVideo, type XmaxRealtimeVideoProps };
|
package/dist/react/index.js
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-V6TY7KAL.js";
|
|
2
|
+
XmaxRealtimeDualVideoView,
|
|
3
|
+
XmaxRealtimeVideoView
|
|
4
|
+
} from "../chunk-IJVTTKBG.js";
|
|
6
5
|
|
|
7
|
-
// src/react/
|
|
6
|
+
// src/react/XmaxRealtimeDualVideo.tsx
|
|
8
7
|
import {
|
|
9
8
|
useEffect,
|
|
10
9
|
useRef
|
|
11
10
|
} from "react";
|
|
12
11
|
import { jsx } from "react/jsx-runtime";
|
|
13
|
-
function
|
|
12
|
+
function XmaxRealtimeDualVideo(props) {
|
|
14
13
|
const containerRef = useRef(null);
|
|
15
14
|
const viewRef = useRef(void 0);
|
|
16
15
|
useEffect(() => {
|
|
@@ -18,7 +17,7 @@ function XmaxRealtimeVideo(props) {
|
|
|
18
17
|
if (!container) {
|
|
19
18
|
return;
|
|
20
19
|
}
|
|
21
|
-
const view = new
|
|
20
|
+
const view = new XmaxRealtimeDualVideoView({ remoteVideoFadeInDuration: props.remoteVideoFadeInDuration });
|
|
22
21
|
view.element.style.width = "100%";
|
|
23
22
|
view.element.style.height = "100%";
|
|
24
23
|
view.attach(container);
|
|
@@ -30,6 +29,11 @@ function XmaxRealtimeVideo(props) {
|
|
|
30
29
|
view.detach();
|
|
31
30
|
};
|
|
32
31
|
}, []);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (viewRef.current) {
|
|
34
|
+
viewRef.current.remoteVideoFadeInDuration = props.remoteVideoFadeInDuration ?? 0.3;
|
|
35
|
+
}
|
|
36
|
+
}, [props.remoteVideoFadeInDuration]);
|
|
33
37
|
useEffect(() => {
|
|
34
38
|
const view = viewRef.current;
|
|
35
39
|
if (view) {
|
|
@@ -68,13 +72,13 @@ function XmaxRealtimeVideo(props) {
|
|
|
68
72
|
);
|
|
69
73
|
}
|
|
70
74
|
|
|
71
|
-
// src/react/
|
|
75
|
+
// src/react/XmaxRealtimeVideo.tsx
|
|
72
76
|
import {
|
|
73
77
|
useEffect as useEffect2,
|
|
74
78
|
useRef as useRef2
|
|
75
79
|
} from "react";
|
|
76
80
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
77
|
-
function
|
|
81
|
+
function XmaxRealtimeVideo(props) {
|
|
78
82
|
const containerRef = useRef2(null);
|
|
79
83
|
const viewRef = useRef2(void 0);
|
|
80
84
|
useEffect2(() => {
|
|
@@ -82,7 +86,7 @@ function XmaxVideo(props) {
|
|
|
82
86
|
if (!container) {
|
|
83
87
|
return;
|
|
84
88
|
}
|
|
85
|
-
const view = new
|
|
89
|
+
const view = new XmaxRealtimeVideoView();
|
|
86
90
|
view.element.style.width = "100%";
|
|
87
91
|
view.element.style.height = "100%";
|
|
88
92
|
view.attach(container);
|
|
@@ -94,7 +98,8 @@ function XmaxVideo(props) {
|
|
|
94
98
|
};
|
|
95
99
|
}, []);
|
|
96
100
|
useEffect2(() => {
|
|
97
|
-
if (viewRef.current)
|
|
101
|
+
if (viewRef.current)
|
|
102
|
+
viewRef.current.renderStatisticsHandler = props.onRenderStatistics;
|
|
98
103
|
}, [props.onRenderStatistics]);
|
|
99
104
|
useEffect2(() => {
|
|
100
105
|
const view = viewRef.current;
|
|
@@ -134,7 +139,7 @@ function XmaxVideo(props) {
|
|
|
134
139
|
);
|
|
135
140
|
}
|
|
136
141
|
export {
|
|
137
|
-
|
|
138
|
-
|
|
142
|
+
XmaxRealtimeDualVideo,
|
|
143
|
+
XmaxRealtimeVideo
|
|
139
144
|
};
|
|
140
145
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/react/
|
|
1
|
+
{"version":3,"sources":["../../src/react/XmaxRealtimeDualVideo.tsx","../../src/react/XmaxRealtimeVideo.tsx"],"sourcesContent":["//\n// XmaxRealtimeDualVideo.tsx\n// XmaxSDK\n//\n// Author: 翁跃庭 (Yueting Weng)\n// GitHub: https://github.com/Xmax-AI/XmaxSDK-Web\n//\n// Copyright (c) 2026 XMAX.AI PTE. LTD.\n//\n\nimport {\n VideoContentMode,\n XmaxRealtimeDualVideoView,\n type RealtimeVideoTrack,\n type TrajectoryEffectRendering,\n} from \"../index\";\nimport {\n useEffect,\n useRef,\n type CSSProperties,\n} from \"react\";\n\n/**\n * 双轨实时视频 React 组件的本地、远端轨道及显示选项。\n */\nexport interface XmaxRealtimeDualVideoProps {\n\n /**\n * 当前显示的本地视频轨道。\n */\n localTrack?: RealtimeVideoTrack;\n\n /**\n * 当前显示的远端生成视频轨道;首帧提交后自动渐入。\n */\n remoteTrack?: RealtimeVideoTrack;\n\n /**\n * 远端画面的渐入时长,单位为秒,默认 0.3;非正数或非有限值关闭动画,不跳过渲染预热。\n */\n remoteVideoFadeInDuration?: number;\n\n /**\n * 视频内容在容器中的显示模式,默认 fill。\n */\n videoContentMode?: VideoContentMode;\n\n /**\n * 容器类名。\n */\n className?: string;\n\n /**\n * 是否允许远端轨迹交互,默认 true;本地轨道不参与。\n */\n isInteractionEnabled?: boolean;\n\n /**\n * 自定义轨迹视觉效果,不传时使用默认效果;一个实例仅供一个视图使用。\n */\n trajectoryRenderer?: TrajectoryEffectRendering;\n\n /**\n * 容器样式。\n */\n style?: CSSProperties;\n}\n\n/**\n * 本地预览和远端生成画面自动切换的 React 组件。\n */\nexport function XmaxRealtimeDualVideo(\n props: XmaxRealtimeDualVideoProps\n) {\n const containerRef = useRef<HTMLDivElement>(null);\n const viewRef = useRef<XmaxRealtimeDualVideoView | undefined>(undefined);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const view = new XmaxRealtimeDualVideoView({ remoteVideoFadeInDuration: props.remoteVideoFadeInDuration });\n view.element.style.width = \"100%\";\n view.element.style.height = \"100%\";\n view.attach(container);\n viewRef.current = view;\n return () => {\n viewRef.current = undefined;\n view.localTrack = undefined;\n view.remoteTrack = undefined;\n view.detach();\n };\n }, []);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.remoteVideoFadeInDuration = props.remoteVideoFadeInDuration ?? 0.3;\n }\n }, [props.remoteVideoFadeInDuration]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view) {\n view.localTrack = props.localTrack;\n }\n }, [props.localTrack]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view) {\n view.remoteTrack = props.remoteTrack;\n }\n }, [props.remoteTrack]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view && props.videoContentMode) {\n view.videoContentMode = props.videoContentMode;\n }\n }, [props.videoContentMode]);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.isInteractionEnabled = props.isInteractionEnabled ?? true;\n }\n }, [props.isInteractionEnabled]);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.trajectoryRenderer = props.trajectoryRenderer;\n }\n }, [props.trajectoryRenderer]);\n\n return (\n <div\n ref={containerRef}\n className={props.className}\n style={{ position: \"relative\", overflow: \"hidden\", ...props.style }}\n />\n );\n}\n","//\n// XmaxRealtimeVideo.tsx\n// XmaxSDK\n//\n// Author: 翁跃庭 (Yueting Weng)\n// GitHub: https://github.com/Xmax-AI/XmaxSDK-Web\n//\n// Copyright (c) 2026 XMAX.AI PTE. LTD.\n//\n\nimport {\n VideoContentMode,\n XmaxRealtimeVideoView,\n type RealtimeVideoTrack,\n type TrajectoryEffectRendering,\n type VideoRenderStatistics,\n} from \"../index\";\nimport {\n useEffect,\n useRef,\n type CSSProperties,\n} from \"react\";\n\n/**\n * 单轨实时视频 React 组件的轨道、显示和交互选项。\n */\nexport interface XmaxRealtimeVideoProps {\n\n /**\n * 当前显示的视频轨道;置空时清空画面。\n */\n track?: RealtimeVideoTrack;\n\n /**\n * 视频内容在容器中的显示模式,默认 fill。\n */\n videoContentMode?: VideoContentMode;\n\n /**\n * 是否镜像显示(仅影响显示,不影响发布流)。\n */\n mirrored?: boolean;\n\n /**\n * 当前视图的呈现帧率统计;换流或卸载时清空,不受统计面板显示开关影响。\n */\n onRenderStatistics?: (\n statistics?: VideoRenderStatistics\n ) => void;\n\n /**\n * 容器类名。\n */\n className?: string;\n\n /**\n * 是否允许远端轨迹交互,默认 true;本地轨道不参与。\n */\n isInteractionEnabled?: boolean;\n\n /**\n * 自定义轨迹视觉效果,不传时使用默认效果;一个实例仅供一个视图使用。\n */\n trajectoryRenderer?: TrajectoryEffectRendering;\n\n /**\n * 容器样式。\n */\n style?: CSSProperties;\n}\n\n/**\n * 单轨视频 React 组件:把一路视频轨渲染到容器。\n * SDK 远端轨道自动预热 1000 ms 后渐入,本地预览直接显示。\n */\nexport function XmaxRealtimeVideo(\n props: XmaxRealtimeVideoProps\n) {\n const containerRef = useRef<HTMLDivElement>(null);\n const viewRef = useRef<XmaxRealtimeVideoView | undefined>(undefined);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const view = new XmaxRealtimeVideoView();\n view.element.style.width = \"100%\";\n view.element.style.height = \"100%\";\n view.attach(container);\n viewRef.current = view;\n return () => {\n viewRef.current = undefined;\n view.track = undefined;\n view.detach();\n };\n }, []);\n\n useEffect(() => {\n if (viewRef.current)\n viewRef.current.renderStatisticsHandler = props.onRenderStatistics;\n }, [props.onRenderStatistics]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view) {\n view.track = props.track;\n }\n }, [props.track]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view && props.videoContentMode) {\n view.videoContentMode = props.videoContentMode;\n }\n }, [props.videoContentMode]);\n\n useEffect(() => {\n const view = viewRef.current;\n if (view && props.mirrored !== undefined) {\n view.isMirrored = props.mirrored;\n }\n }, [props.mirrored]);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.isInteractionEnabled = props.isInteractionEnabled ?? true;\n }\n }, [props.isInteractionEnabled]);\n\n useEffect(() => {\n if (viewRef.current) {\n viewRef.current.trajectoryRenderer = props.trajectoryRenderer;\n }\n }, [props.trajectoryRenderer]);\n\n return (\n <div\n ref={containerRef}\n className={props.className}\n style={{ position: \"relative\", overflow: \"hidden\", ...props.style }}\n />\n );\n}\n"],"mappings":"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","names":["useEffect","useRef","jsx"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xmaxai/web-sdk",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "XmaxSDK for Web — Realtime Interactive Video Generation",
|
|
6
6
|
"type": "module",
|
|
@@ -23,10 +23,16 @@
|
|
|
23
23
|
"dist",
|
|
24
24
|
"LICENSE"
|
|
25
25
|
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "tsup",
|
|
28
|
+
"test": "vitest run",
|
|
29
|
+
"typecheck": "tsc --noEmit",
|
|
30
|
+
"prepack": "cp ../../README.md ./README.md",
|
|
31
|
+
"prepublishOnly": "npm run build && npm run test && cp ../../README.md ./README.md"
|
|
32
|
+
},
|
|
26
33
|
"devDependencies": {
|
|
27
34
|
"@types/react": "^18.3.12",
|
|
28
35
|
"react": "^18.3.1",
|
|
29
|
-
"@webgpu/types": "^0.1.64",
|
|
30
36
|
"tsup": "^8.3.5",
|
|
31
37
|
"typescript": "~5.6.3",
|
|
32
38
|
"vitest": "^2.1.8"
|
|
@@ -42,14 +48,7 @@
|
|
|
42
48
|
"dependencies": {
|
|
43
49
|
"@volcengine/rtc": "4.69.3",
|
|
44
50
|
"agora-rtc-sdk-ng": "4.24.8",
|
|
45
|
-
"framegen": "1.4.0",
|
|
46
|
-
"mediabunny": "1.61.4",
|
|
47
51
|
"cos-js-sdk-v5": "^1.10.1",
|
|
48
52
|
"trtc-sdk-v5": "^5.6.0"
|
|
49
|
-
},
|
|
50
|
-
"scripts": {
|
|
51
|
-
"build": "node scripts/embed-framegen.mjs && tsup",
|
|
52
|
-
"test": "vitest run",
|
|
53
|
-
"typecheck": "tsc --noEmit"
|
|
54
53
|
}
|
|
55
|
-
}
|
|
54
|
+
}
|