@xmaxai/web-sdk 1.0.7 → 1.0.8

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/index.cjs CHANGED
@@ -33,7 +33,7 @@
33
33
 
34
34
 
35
35
 
36
- var _chunkEKOYOFEScjs = require('./chunk-EKOYOFES.cjs');
36
+ var _chunk24VPU65Tcjs = require('./chunk-24VPU65T.cjs');
37
37
 
38
38
 
39
39
 
@@ -69,5 +69,5 @@ var _chunkEKOYOFEScjs = require('./chunk-EKOYOFES.cjs');
69
69
 
70
70
 
71
71
 
72
- exports.CameraPosition = _chunkEKOYOFEScjs.CameraPosition; exports.MediaService = _chunkEKOYOFEScjs.MediaService; exports.NonRealtimeQuality = _chunkEKOYOFEScjs.NonRealtimeQuality; exports.NonRealtimeTaskError = _chunkEKOYOFEScjs.NonRealtimeTaskError; exports.NonRealtimeTaskStatus = _chunkEKOYOFEScjs.NonRealtimeTaskStatus; exports.RealtimeConfiguration = _chunkEKOYOFEScjs.RealtimeConfiguration; exports.RealtimeConnectionState = _chunkEKOYOFEScjs.RealtimeConnectionState; exports.RealtimeContext = _chunkEKOYOFEScjs.RealtimeContext; exports.RealtimeMediaStream = _chunkEKOYOFEScjs.RealtimeMediaStream; exports.RealtimeModel = _chunkEKOYOFEScjs.RealtimeModel; exports.RealtimeReason = _chunkEKOYOFEScjs.RealtimeReason; exports.RealtimeState = _chunkEKOYOFEScjs.RealtimeState; exports.RealtimeVideoEncoderPreference = _chunkEKOYOFEScjs.RealtimeVideoEncoderPreference; exports.RealtimeVideoFormat = _chunkEKOYOFEScjs.RealtimeVideoFormat; exports.RealtimeVideoSampleMethod = _chunkEKOYOFEScjs.RealtimeVideoSampleMethod; exports.RealtimeVideoTrack = _chunkEKOYOFEScjs.RealtimeVideoTrack; exports.RtcProvider = _chunkEKOYOFEScjs.RtcProvider; exports.StorageService = _chunkEKOYOFEScjs.StorageService; exports.StoredFile = _chunkEKOYOFEScjs.StoredFile; exports.VideoContentMode = _chunkEKOYOFEScjs.VideoContentMode; exports.XmaxClient = _chunkEKOYOFEScjs.XmaxClient; exports.XmaxConfiguration = _chunkEKOYOFEScjs.XmaxConfiguration; exports.XmaxEnvironment = _chunkEKOYOFEScjs.XmaxEnvironment; exports.XmaxError = _chunkEKOYOFEScjs.XmaxError; exports.XmaxErrorCode = _chunkEKOYOFEScjs.XmaxErrorCode; exports.XmaxLogger = _chunkEKOYOFEScjs.XmaxLogger; exports.XmaxLoggerOption = _chunkEKOYOFEScjs.XmaxLoggerOption; exports.XmaxRealtimeVideoView = _chunkEKOYOFEScjs.XmaxRealtimeVideoView; exports.XmaxVideoView = _chunkEKOYOFEScjs.XmaxVideoView; exports.apiBaseURL = _chunkEKOYOFEScjs.apiBaseURL; exports.defaultCameraVideoFormat = _chunkEKOYOFEScjs.defaultCameraVideoFormat; exports.defaultFrameRate = _chunkEKOYOFEScjs.defaultFrameRate; exports.modelDisplayName = _chunkEKOYOFEScjs.modelDisplayName; exports.supportedRtcProviders = _chunkEKOYOFEScjs.supportedRtcProviders;
72
+ exports.CameraPosition = _chunk24VPU65Tcjs.CameraPosition; exports.MediaService = _chunk24VPU65Tcjs.MediaService; exports.NonRealtimeQuality = _chunk24VPU65Tcjs.NonRealtimeQuality; exports.NonRealtimeTaskError = _chunk24VPU65Tcjs.NonRealtimeTaskError; exports.NonRealtimeTaskStatus = _chunk24VPU65Tcjs.NonRealtimeTaskStatus; exports.RealtimeConfiguration = _chunk24VPU65Tcjs.RealtimeConfiguration; exports.RealtimeConnectionState = _chunk24VPU65Tcjs.RealtimeConnectionState; exports.RealtimeContext = _chunk24VPU65Tcjs.RealtimeContext; exports.RealtimeMediaStream = _chunk24VPU65Tcjs.RealtimeMediaStream; exports.RealtimeModel = _chunk24VPU65Tcjs.RealtimeModel; exports.RealtimeReason = _chunk24VPU65Tcjs.RealtimeReason; exports.RealtimeState = _chunk24VPU65Tcjs.RealtimeState; exports.RealtimeVideoEncoderPreference = _chunk24VPU65Tcjs.RealtimeVideoEncoderPreference; exports.RealtimeVideoFormat = _chunk24VPU65Tcjs.RealtimeVideoFormat; exports.RealtimeVideoSampleMethod = _chunk24VPU65Tcjs.RealtimeVideoSampleMethod; exports.RealtimeVideoTrack = _chunk24VPU65Tcjs.RealtimeVideoTrack; exports.RtcProvider = _chunk24VPU65Tcjs.RtcProvider; exports.StorageService = _chunk24VPU65Tcjs.StorageService; exports.StoredFile = _chunk24VPU65Tcjs.StoredFile; exports.VideoContentMode = _chunk24VPU65Tcjs.VideoContentMode; exports.XmaxClient = _chunk24VPU65Tcjs.XmaxClient; exports.XmaxConfiguration = _chunk24VPU65Tcjs.XmaxConfiguration; exports.XmaxEnvironment = _chunk24VPU65Tcjs.XmaxEnvironment; exports.XmaxError = _chunk24VPU65Tcjs.XmaxError; exports.XmaxErrorCode = _chunk24VPU65Tcjs.XmaxErrorCode; exports.XmaxLogger = _chunk24VPU65Tcjs.XmaxLogger; exports.XmaxLoggerOption = _chunk24VPU65Tcjs.XmaxLoggerOption; exports.XmaxRealtimeVideoView = _chunk24VPU65Tcjs.XmaxRealtimeVideoView; exports.XmaxVideoView = _chunk24VPU65Tcjs.XmaxVideoView; exports.apiBaseURL = _chunk24VPU65Tcjs.apiBaseURL; exports.defaultCameraVideoFormat = _chunk24VPU65Tcjs.defaultCameraVideoFormat; exports.defaultFrameRate = _chunk24VPU65Tcjs.defaultFrameRate; exports.modelDisplayName = _chunk24VPU65Tcjs.modelDisplayName; exports.supportedRtcProviders = _chunk24VPU65Tcjs.supportedRtcProviders;
73
73
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/private/var/folders/5j/p3g3j18x2w3byrl5wtnk94tc0000gn/T/xmax-web-release-6u7tUB/source/packages/xmax-sdk/dist/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,unEAAC","file":"/private/var/folders/5j/p3g3j18x2w3byrl5wtnk94tc0000gn/T/xmax-web-release-6u7tUB/source/packages/xmax-sdk/dist/index.cjs"}
1
+ {"version":3,"sources":["/private/var/folders/5j/p3g3j18x2w3byrl5wtnk94tc0000gn/T/xmax-web-release-NxUj61/source/packages/xmax-sdk/dist/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,unEAAC","file":"/private/var/folders/5j/p3g3j18x2w3byrl5wtnk94tc0000gn/T/xmax-web-release-NxUj61/source/packages/xmax-sdk/dist/index.cjs"}
package/dist/index.d.cts CHANGED
@@ -25,7 +25,8 @@ declare enum RtcProvider {
25
25
  declare enum RealtimeModel {
26
26
  x2_0 = "x2.0",
27
27
  x2_0_trtc = "x2.0-trtc",
28
- x2_1_preview = "x2.1-preview"
28
+ x2_1_preview = "x2.1-preview",
29
+ x2_1_preview_1014 = "x2.1-preview-1014"
29
30
  }
30
31
  /** 内置模型或服务端新增的模型标识;自定义名称原样传给服务端。 */
31
32
  type RealtimeModelName = RealtimeModel | (string & {});
@@ -713,6 +714,11 @@ interface XmaxRealtimeManaging {
713
714
  *
714
715
  * 将返回的轨道绑定到预览视图;收到有效帧且视图已绑定后进入 `ready`。
715
716
  *
717
+ * @param options.videoFormat 旋转后的目标规格,尺寸按模型规则解析。
718
+ * @param options.position 前置或后置摄像头。
719
+ * @param options.useMicrophone 是否采集并发布麦克风音频。
720
+ * @param options.rotation 输入帧顺时针旋转角度,默认 0;非零角度目前仅支持 Agora,预览和上传均校正方向,镜像保持独立。
721
+ * @param options.enableFrameValidation 是否在发布前等待相机预热(固定 200ms),默认 true;false 跳过等待,不产生预热耗时。
716
722
  * @returns 包含本地相机视频轨道的媒体流。
717
723
  * @throws 模型不支持相机输入、配置无效、权限或采集启动失败时抛出错误。
718
724
  */
@@ -720,20 +726,14 @@ interface XmaxRealtimeManaging {
720
726
  videoFormat: RealtimeVideoFormat;
721
727
  position: CameraPosition;
722
728
  useMicrophone: boolean;
723
- /**
724
- * 输入帧顺时针旋转角度,默认 0;videoFormat 指旋转后的目标规格。
725
- * 非零角度目前仅支持 Agora,预览和上传均校正方向,镜像保持独立。
726
- */
727
729
  rotation?: CameraRotation;
728
- /**
729
- * 是否在发布前等待相机预热(固定 200ms),默认 true;false 跳过等待,不产生预热耗时。
730
- */
731
730
  enableFrameValidation?: boolean;
732
731
  }): Promise<RealtimeMediaStream>;
733
732
  /**
734
733
  * 创建服务端直接读取的 HTTP/HTTPS 网络视频源,不采集或发布本地音视频。
735
734
  * 本地预览静音播放一次,独立于服务端进度;创建源不会开始生成。
736
735
  * 地址必须可由服务端直接访问,不转发浏览器 Cookie 或自定义鉴权头。
736
+ * @param options.url 服务端可直接访问的 HTTP/HTTPS 视频地址。
737
737
  * @param options.videoFormat 模型输入及生成画面规格,不是上行编码参数。
738
738
  * @param options.sampleMethod 服务端采样方式,默认 time。
739
739
  * @param options.onFinish 当前任务收到服务端完成消息且生成就绪后调用一次,不代表尾帧已播放完。
@@ -749,6 +749,7 @@ interface XmaxRealtimeManaging {
749
749
  * 从本地 File/Blob 创建文件视频源,支持 TRTC、Agora 和 VeRTC,不访问摄像头或麦克风。
750
750
  * 通过 Canvas 等比缩放补黑边,文件音频独立上行,本地预览始终静音。
751
751
  * 应从用户点击事件直接调用以解锁播放;创建后停在首帧,startGeneration 时开始播放。
752
+ * @param options.file 包含可解码视频的本地 File 或 Blob。
752
753
  * @param options.videoFormat 期望的视频规格;尺寸自动匹配最接近宽高比的模型档位,等距时优先横屏。
753
754
  * @param options.loop 是否循环播放文件音视频,默认 true。
754
755
  * @param options.includeAudio 是否发送文件音频,默认 true;无音轨文件输出静音,false 不创建音频轨。
@@ -760,6 +761,19 @@ interface XmaxRealtimeManaging {
760
761
  loop?: boolean;
761
762
  includeAudio?: boolean;
762
763
  }): Promise<RealtimeMediaStream>;
764
+ /**
765
+ * 接收用户自行采集或处理的实时视频轨,仅视频,不采集或发送音频。
766
+ * 不要求绑定 SDK 预览;旋转、裁剪及本地预览由调用方负责,后端 mirror 固定 false。
767
+ * SDK 持有轨道副本:disconnect 保留输入,close 释放副本,不停止调用方原始轨道。
768
+ * 副本共享底层媒体源;调用方仍负责停止原始采集。设备源结束时 SDK 上报错误并关闭。
769
+ * @param options.videoTrack 用户自行采集或处理的 live 视频轨,原始轨道归调用方所有。
770
+ * @param options.videoFormat 期望的上传及生成规格,须符合模型规则;不代表修改输入像素。
771
+ * @throws 非 live 视频轨、不支持的格式、已有活动媒体源或 RTC 初始化失败时抛错。
772
+ */
773
+ createExternalVideoStream(options: {
774
+ videoTrack: MediaStreamTrack;
775
+ videoFormat: RealtimeVideoFormat;
776
+ }): Promise<RealtimeMediaStream>;
763
777
  /**
764
778
  * 更新当前本地流的上行视频格式,立即应用于 RTC 编码器,不重连或重启生成。
765
779
  * 传入完整格式;未指定的码率和编码偏好按 RealtimeVideoFormat 默认规则解析。
@@ -769,7 +783,7 @@ interface XmaxRealtimeManaging {
769
783
  * Agora 上行自适应以本次成功应用的完整格式作为新的 L1 基准,后续五档按比例调整尺寸和帧率。
770
784
  *
771
785
  * @param videoFormat 本次完整的上行尺寸、帧率和编码配置。
772
- * @throws 无本地相机或文件视频流、其他操作进行中、参数无效或 RTC 更新失败时抛错。
786
+ * @throws 无本地相机、外部或文件视频流、其他操作进行中、参数无效或 RTC 更新失败时抛错。
773
787
  */
774
788
  updateUplinkVideoFormat(videoFormat: RealtimeVideoFormat): Promise<void>;
775
789
  /**
@@ -799,7 +813,7 @@ interface XmaxRealtimeManaging {
799
813
  * 启用帧检测时,发布前并行等待相机预热(固定 200ms),避免把黑帧推给 RTC。
800
814
  * 返回的远端媒体流在生成开始后承载远端生成画面。
801
815
  *
802
- * @param localStream 由当前 Manager 创建的摄像头、本地文件或网络视频源。
816
+ * @param localStream 由当前 Manager 创建的摄像头、外部视频轨、本地文件或网络视频源。
803
817
  * @returns 远端生成结果占位的媒体流。
804
818
  * @throws 本地流不属于当前 Manager、已有活动连接、会话创建或进房
805
819
  * 发布失败时抛出错误;失败时自动释放连接资源并恢复本地预览。
@@ -820,8 +834,9 @@ interface XmaxRealtimeManaging {
820
834
  * 尚未连接时先建立实时连接;已在生成时仅更新生成条件,不重启生成。
821
835
  * 首次生成必须提供条件上下文,之后缺省时复用最近一次缓存的上下文。
822
836
  *
823
- * @param options.localStream 由当前 Manager 创建的摄像头、本地文件或网络视频源。
837
+ * @param options.localStream 由当前 Manager 创建的摄像头、外部视频轨、本地文件或网络视频源。
824
838
  * @param options.context 本次生成使用的条件上下文;缺省时复用缓存。
839
+ * @param options.faceRestoration 是否启用原始人脸回贴,默认 false;正在生成时通过 change_condition 更新。
825
840
  * @returns 承载远端生成画面的媒体流。
826
841
  * @throws 本地流不属于当前 Manager、缺少可用的条件上下文、信令发送
827
842
  * 或生成确认失败时抛出错误;失败时自动停止生成任务并释放连接资源。
@@ -829,6 +844,7 @@ interface XmaxRealtimeManaging {
829
844
  startGeneration(options: {
830
845
  localStream: RealtimeMediaStream;
831
846
  context?: RealtimeContext;
847
+ faceRestoration?: boolean;
832
848
  }): Promise<RealtimeMediaStream>;
833
849
  }
834
850
 
package/dist/index.d.ts CHANGED
@@ -25,7 +25,8 @@ declare enum RtcProvider {
25
25
  declare enum RealtimeModel {
26
26
  x2_0 = "x2.0",
27
27
  x2_0_trtc = "x2.0-trtc",
28
- x2_1_preview = "x2.1-preview"
28
+ x2_1_preview = "x2.1-preview",
29
+ x2_1_preview_1014 = "x2.1-preview-1014"
29
30
  }
30
31
  /** 内置模型或服务端新增的模型标识;自定义名称原样传给服务端。 */
31
32
  type RealtimeModelName = RealtimeModel | (string & {});
@@ -713,6 +714,11 @@ interface XmaxRealtimeManaging {
713
714
  *
714
715
  * 将返回的轨道绑定到预览视图;收到有效帧且视图已绑定后进入 `ready`。
715
716
  *
717
+ * @param options.videoFormat 旋转后的目标规格,尺寸按模型规则解析。
718
+ * @param options.position 前置或后置摄像头。
719
+ * @param options.useMicrophone 是否采集并发布麦克风音频。
720
+ * @param options.rotation 输入帧顺时针旋转角度,默认 0;非零角度目前仅支持 Agora,预览和上传均校正方向,镜像保持独立。
721
+ * @param options.enableFrameValidation 是否在发布前等待相机预热(固定 200ms),默认 true;false 跳过等待,不产生预热耗时。
716
722
  * @returns 包含本地相机视频轨道的媒体流。
717
723
  * @throws 模型不支持相机输入、配置无效、权限或采集启动失败时抛出错误。
718
724
  */
@@ -720,20 +726,14 @@ interface XmaxRealtimeManaging {
720
726
  videoFormat: RealtimeVideoFormat;
721
727
  position: CameraPosition;
722
728
  useMicrophone: boolean;
723
- /**
724
- * 输入帧顺时针旋转角度,默认 0;videoFormat 指旋转后的目标规格。
725
- * 非零角度目前仅支持 Agora,预览和上传均校正方向,镜像保持独立。
726
- */
727
729
  rotation?: CameraRotation;
728
- /**
729
- * 是否在发布前等待相机预热(固定 200ms),默认 true;false 跳过等待,不产生预热耗时。
730
- */
731
730
  enableFrameValidation?: boolean;
732
731
  }): Promise<RealtimeMediaStream>;
733
732
  /**
734
733
  * 创建服务端直接读取的 HTTP/HTTPS 网络视频源,不采集或发布本地音视频。
735
734
  * 本地预览静音播放一次,独立于服务端进度;创建源不会开始生成。
736
735
  * 地址必须可由服务端直接访问,不转发浏览器 Cookie 或自定义鉴权头。
736
+ * @param options.url 服务端可直接访问的 HTTP/HTTPS 视频地址。
737
737
  * @param options.videoFormat 模型输入及生成画面规格,不是上行编码参数。
738
738
  * @param options.sampleMethod 服务端采样方式,默认 time。
739
739
  * @param options.onFinish 当前任务收到服务端完成消息且生成就绪后调用一次,不代表尾帧已播放完。
@@ -749,6 +749,7 @@ interface XmaxRealtimeManaging {
749
749
  * 从本地 File/Blob 创建文件视频源,支持 TRTC、Agora 和 VeRTC,不访问摄像头或麦克风。
750
750
  * 通过 Canvas 等比缩放补黑边,文件音频独立上行,本地预览始终静音。
751
751
  * 应从用户点击事件直接调用以解锁播放;创建后停在首帧,startGeneration 时开始播放。
752
+ * @param options.file 包含可解码视频的本地 File 或 Blob。
752
753
  * @param options.videoFormat 期望的视频规格;尺寸自动匹配最接近宽高比的模型档位,等距时优先横屏。
753
754
  * @param options.loop 是否循环播放文件音视频,默认 true。
754
755
  * @param options.includeAudio 是否发送文件音频,默认 true;无音轨文件输出静音,false 不创建音频轨。
@@ -760,6 +761,19 @@ interface XmaxRealtimeManaging {
760
761
  loop?: boolean;
761
762
  includeAudio?: boolean;
762
763
  }): Promise<RealtimeMediaStream>;
764
+ /**
765
+ * 接收用户自行采集或处理的实时视频轨,仅视频,不采集或发送音频。
766
+ * 不要求绑定 SDK 预览;旋转、裁剪及本地预览由调用方负责,后端 mirror 固定 false。
767
+ * SDK 持有轨道副本:disconnect 保留输入,close 释放副本,不停止调用方原始轨道。
768
+ * 副本共享底层媒体源;调用方仍负责停止原始采集。设备源结束时 SDK 上报错误并关闭。
769
+ * @param options.videoTrack 用户自行采集或处理的 live 视频轨,原始轨道归调用方所有。
770
+ * @param options.videoFormat 期望的上传及生成规格,须符合模型规则;不代表修改输入像素。
771
+ * @throws 非 live 视频轨、不支持的格式、已有活动媒体源或 RTC 初始化失败时抛错。
772
+ */
773
+ createExternalVideoStream(options: {
774
+ videoTrack: MediaStreamTrack;
775
+ videoFormat: RealtimeVideoFormat;
776
+ }): Promise<RealtimeMediaStream>;
763
777
  /**
764
778
  * 更新当前本地流的上行视频格式,立即应用于 RTC 编码器,不重连或重启生成。
765
779
  * 传入完整格式;未指定的码率和编码偏好按 RealtimeVideoFormat 默认规则解析。
@@ -769,7 +783,7 @@ interface XmaxRealtimeManaging {
769
783
  * Agora 上行自适应以本次成功应用的完整格式作为新的 L1 基准,后续五档按比例调整尺寸和帧率。
770
784
  *
771
785
  * @param videoFormat 本次完整的上行尺寸、帧率和编码配置。
772
- * @throws 无本地相机或文件视频流、其他操作进行中、参数无效或 RTC 更新失败时抛错。
786
+ * @throws 无本地相机、外部或文件视频流、其他操作进行中、参数无效或 RTC 更新失败时抛错。
773
787
  */
774
788
  updateUplinkVideoFormat(videoFormat: RealtimeVideoFormat): Promise<void>;
775
789
  /**
@@ -799,7 +813,7 @@ interface XmaxRealtimeManaging {
799
813
  * 启用帧检测时,发布前并行等待相机预热(固定 200ms),避免把黑帧推给 RTC。
800
814
  * 返回的远端媒体流在生成开始后承载远端生成画面。
801
815
  *
802
- * @param localStream 由当前 Manager 创建的摄像头、本地文件或网络视频源。
816
+ * @param localStream 由当前 Manager 创建的摄像头、外部视频轨、本地文件或网络视频源。
803
817
  * @returns 远端生成结果占位的媒体流。
804
818
  * @throws 本地流不属于当前 Manager、已有活动连接、会话创建或进房
805
819
  * 发布失败时抛出错误;失败时自动释放连接资源并恢复本地预览。
@@ -820,8 +834,9 @@ interface XmaxRealtimeManaging {
820
834
  * 尚未连接时先建立实时连接;已在生成时仅更新生成条件,不重启生成。
821
835
  * 首次生成必须提供条件上下文,之后缺省时复用最近一次缓存的上下文。
822
836
  *
823
- * @param options.localStream 由当前 Manager 创建的摄像头、本地文件或网络视频源。
837
+ * @param options.localStream 由当前 Manager 创建的摄像头、外部视频轨、本地文件或网络视频源。
824
838
  * @param options.context 本次生成使用的条件上下文;缺省时复用缓存。
839
+ * @param options.faceRestoration 是否启用原始人脸回贴,默认 false;正在生成时通过 change_condition 更新。
825
840
  * @returns 承载远端生成画面的媒体流。
826
841
  * @throws 本地流不属于当前 Manager、缺少可用的条件上下文、信令发送
827
842
  * 或生成确认失败时抛出错误;失败时自动停止生成任务并释放连接资源。
@@ -829,6 +844,7 @@ interface XmaxRealtimeManaging {
829
844
  startGeneration(options: {
830
845
  localStream: RealtimeMediaStream;
831
846
  context?: RealtimeContext;
847
+ faceRestoration?: boolean;
832
848
  }): Promise<RealtimeMediaStream>;
833
849
  }
834
850
 
package/dist/index.js CHANGED
@@ -33,7 +33,7 @@ import {
33
33
  defaultFrameRate,
34
34
  modelDisplayName,
35
35
  supportedRtcProviders
36
- } from "./chunk-4O5BSMUX.js";
36
+ } from "./chunk-JGDZ3RD3.js";
37
37
  export {
38
38
  CameraPosition,
39
39
  MediaService,
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkEKOYOFEScjs = require('../chunk-EKOYOFES.cjs');
4
+ var _chunk24VPU65Tcjs = require('../chunk-24VPU65T.cjs');
5
5
 
6
6
  // src/react/XmaxRealtimeVideo.tsx
7
7
 
@@ -17,7 +17,7 @@ function XmaxRealtimeVideo(props) {
17
17
  if (!container) {
18
18
  return;
19
19
  }
20
- const view = new (0, _chunkEKOYOFEScjs.XmaxRealtimeVideoView)();
20
+ const view = new (0, _chunk24VPU65Tcjs.XmaxRealtimeVideoView)();
21
21
  view.element.style.width = "100%";
22
22
  view.element.style.height = "100%";
23
23
  view.attach(container);
@@ -71,7 +71,7 @@ function XmaxVideo(props) {
71
71
  if (!container) {
72
72
  return;
73
73
  }
74
- const view = new (0, _chunkEKOYOFEScjs.XmaxVideoView)();
74
+ const view = new (0, _chunk24VPU65Tcjs.XmaxVideoView)();
75
75
  view.element.style.width = "100%";
76
76
  view.element.style.height = "100%";
77
77
  view.attach(container);
@@ -1 +1 @@
1
- {"version":3,"sources":["/private/var/folders/5j/p3g3j18x2w3byrl5wtnk94tc0000gn/T/xmax-web-release-6u7tUB/source/packages/xmax-sdk/dist/react/index.cjs","../../src/react/XmaxRealtimeVideo.tsx","../../src/react/XmaxVideo.tsx"],"names":["useRef","useEffect","jsx"],"mappings":"AAAA;AACE;AACA;AACF,yDAA8B;AAC9B;AACA;ACAA;AACE;AACA;AAAA,8BAEK;AA6EH,+CAAA;AA7CG,SAAS,iBAAA,CAAkB,KAAA,EAA+B;AAC/D,EAAA,MAAM,aAAA,EAAe,2BAAA,IAA2B,CAAA;AAChD,EAAA,MAAM,QAAA,EAAU,2BAAA,KAA0C,CAAS,CAAA;AAEnE,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,UAAA,EAAY,YAAA,CAAa,OAAA;AAC/B,IAAA,GAAA,CAAI,CAAC,SAAA,EAAW;AACd,MAAA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,EAAO,IAAI,4CAAA,CAAsB,CAAA;AACvC,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,MAAA,EAAQ,MAAA;AAC3B,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,OAAA,EAAS,MAAA;AAC5B,IAAA,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AACrB,IAAA,OAAA,CAAQ,QAAA,EAAU,IAAA;AAClB,IAAA,OAAO,CAAA,EAAA,GAAM;AACX,MAAA,OAAA,CAAQ,QAAA,EAAU,KAAA,CAAA;AAClB,MAAA,IAAA,CAAK,WAAA,EAAa,KAAA,CAAA;AAClB,MAAA,IAAA,CAAK,YAAA,EAAc,KAAA,CAAA;AACnB,MAAA,IAAA,CAAK,MAAA,CAAO,CAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,GAAA,CAAI,IAAA,EAAM;AACR,MAAA,IAAA,CAAK,WAAA,EAAa,KAAA,CAAM,UAAA;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,UAAU,CAAC,CAAA;AAErB,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,GAAA,CAAI,IAAA,EAAM;AACR,MAAA,IAAA,CAAK,YAAA,EAAc,KAAA,CAAM,WAAA;AAAA,IAC3B;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,WAAW,CAAC,CAAA;AAEtB,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,GAAA,CAAI,KAAA,GAAQ,KAAA,CAAM,gBAAA,EAAkB;AAClC,MAAA,IAAA,CAAK,iBAAA,EAAmB,KAAA,CAAM,gBAAA;AAAA,IAChC;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,gBAAgB,CAAC,CAAA;AAE3B,EAAA,uBACE,6BAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,YAAA;AAAA,MACL,SAAA,EAAW,KAAA,CAAM,SAAA;AAAA,MACjB,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,GAAG,KAAA,CAAM,MAAM;AAAA,IAAA;AAAA,EACpE,CAAA;AAEJ;ADlCA;AACA;AErDA;AACE;AACA;AAAA;AAuFE;AAhDG,SAAS,SAAA,CAAU,KAAA,EAAuB;AAC/C,EAAA,MAAM,aAAA,EAAeA,2BAAAA,IAA2B,CAAA;AAChD,EAAA,MAAM,QAAA,EAAUA,2BAAAA,KAAkC,CAAS,CAAA;AAE3D,EAAAC,8BAAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,UAAA,EAAY,YAAA,CAAa,OAAA;AAC/B,IAAA,GAAA,CAAI,CAAC,SAAA,EAAW;AACd,MAAA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,EAAO,IAAI,oCAAA,CAAc,CAAA;AAC/B,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,MAAA,EAAQ,MAAA;AAC3B,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,OAAA,EAAS,MAAA;AAC5B,IAAA,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AACrB,IAAA,OAAA,CAAQ,QAAA,EAAU,IAAA;AAClB,IAAA,OAAO,CAAA,EAAA,GAAM;AACX,MAAA,OAAA,CAAQ,QAAA,EAAU,KAAA,CAAA;AAClB,MAAA,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAA;AACb,MAAA,IAAA,CAAK,MAAA,CAAO,CAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAAA,8BAAAA,CAAU,EAAA,GAAM;AACd,IAAA,GAAA,CAAI,OAAA,CAAQ,OAAA,EAAS,OAAA,CAAQ,OAAA,CAAQ,wBAAA,EAA0B,KAAA,CAAM,kBAAA;AAAA,EACvE,CAAA,EAAG,CAAC,KAAA,CAAM,kBAAkB,CAAC,CAAA;AAE7B,EAAAA,8BAAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,GAAA,CAAI,IAAA,EAAM;AACR,MAAA,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAM,KAAA;AAAA,IACrB;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,KAAK,CAAC,CAAA;AAEhB,EAAAA,8BAAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,GAAA,CAAI,KAAA,GAAQ,KAAA,CAAM,gBAAA,EAAkB;AAClC,MAAA,IAAA,CAAK,iBAAA,EAAmB,KAAA,CAAM,gBAAA;AAAA,IAChC;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,gBAAgB,CAAC,CAAA;AAE3B,EAAAA,8BAAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,GAAA,CAAI,KAAA,GAAQ,KAAA,CAAM,SAAA,IAAa,KAAA,CAAA,EAAW;AACxC,MAAA,IAAA,CAAK,WAAA,EAAa,KAAA,CAAM,QAAA;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,QAAQ,CAAC,CAAA;AAEnB,EAAA,uBACEC,6BAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,YAAA;AAAA,MACL,SAAA,EAAW,KAAA,CAAM,SAAA;AAAA,MACjB,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,GAAG,KAAA,CAAM,MAAM;AAAA,IAAA;AAAA,EACpE,CAAA;AAEJ;AFaA;AACE;AACA;AACF,6EAAC","file":"/private/var/folders/5j/p3g3j18x2w3byrl5wtnk94tc0000gn/T/xmax-web-release-6u7tUB/source/packages/xmax-sdk/dist/react/index.cjs","sourcesContent":[null,"import {\n VideoContentMode,\n XmaxRealtimeVideoView,\n type RealtimeVideoTrack,\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 * 容器样式。\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 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 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 * 容器样式。\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 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":["/private/var/folders/5j/p3g3j18x2w3byrl5wtnk94tc0000gn/T/xmax-web-release-NxUj61/source/packages/xmax-sdk/dist/react/index.cjs","../../src/react/XmaxRealtimeVideo.tsx","../../src/react/XmaxVideo.tsx"],"names":["useRef","useEffect","jsx"],"mappings":"AAAA;AACE;AACA;AACF,yDAA8B;AAC9B;AACA;ACAA;AACE;AACA;AAAA,8BAEK;AA6EH,+CAAA;AA7CG,SAAS,iBAAA,CAAkB,KAAA,EAA+B;AAC/D,EAAA,MAAM,aAAA,EAAe,2BAAA,IAA2B,CAAA;AAChD,EAAA,MAAM,QAAA,EAAU,2BAAA,KAA0C,CAAS,CAAA;AAEnE,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,UAAA,EAAY,YAAA,CAAa,OAAA;AAC/B,IAAA,GAAA,CAAI,CAAC,SAAA,EAAW;AACd,MAAA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,EAAO,IAAI,4CAAA,CAAsB,CAAA;AACvC,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,MAAA,EAAQ,MAAA;AAC3B,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,OAAA,EAAS,MAAA;AAC5B,IAAA,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AACrB,IAAA,OAAA,CAAQ,QAAA,EAAU,IAAA;AAClB,IAAA,OAAO,CAAA,EAAA,GAAM;AACX,MAAA,OAAA,CAAQ,QAAA,EAAU,KAAA,CAAA;AAClB,MAAA,IAAA,CAAK,WAAA,EAAa,KAAA,CAAA;AAClB,MAAA,IAAA,CAAK,YAAA,EAAc,KAAA,CAAA;AACnB,MAAA,IAAA,CAAK,MAAA,CAAO,CAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,GAAA,CAAI,IAAA,EAAM;AACR,MAAA,IAAA,CAAK,WAAA,EAAa,KAAA,CAAM,UAAA;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,UAAU,CAAC,CAAA;AAErB,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,GAAA,CAAI,IAAA,EAAM;AACR,MAAA,IAAA,CAAK,YAAA,EAAc,KAAA,CAAM,WAAA;AAAA,IAC3B;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,WAAW,CAAC,CAAA;AAEtB,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,GAAA,CAAI,KAAA,GAAQ,KAAA,CAAM,gBAAA,EAAkB;AAClC,MAAA,IAAA,CAAK,iBAAA,EAAmB,KAAA,CAAM,gBAAA;AAAA,IAChC;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,gBAAgB,CAAC,CAAA;AAE3B,EAAA,uBACE,6BAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,YAAA;AAAA,MACL,SAAA,EAAW,KAAA,CAAM,SAAA;AAAA,MACjB,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,GAAG,KAAA,CAAM,MAAM;AAAA,IAAA;AAAA,EACpE,CAAA;AAEJ;ADlCA;AACA;AErDA;AACE;AACA;AAAA;AAuFE;AAhDG,SAAS,SAAA,CAAU,KAAA,EAAuB;AAC/C,EAAA,MAAM,aAAA,EAAeA,2BAAAA,IAA2B,CAAA;AAChD,EAAA,MAAM,QAAA,EAAUA,2BAAAA,KAAkC,CAAS,CAAA;AAE3D,EAAAC,8BAAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,UAAA,EAAY,YAAA,CAAa,OAAA;AAC/B,IAAA,GAAA,CAAI,CAAC,SAAA,EAAW;AACd,MAAA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,EAAO,IAAI,oCAAA,CAAc,CAAA;AAC/B,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,MAAA,EAAQ,MAAA;AAC3B,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,OAAA,EAAS,MAAA;AAC5B,IAAA,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AACrB,IAAA,OAAA,CAAQ,QAAA,EAAU,IAAA;AAClB,IAAA,OAAO,CAAA,EAAA,GAAM;AACX,MAAA,OAAA,CAAQ,QAAA,EAAU,KAAA,CAAA;AAClB,MAAA,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAA;AACb,MAAA,IAAA,CAAK,MAAA,CAAO,CAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAAA,8BAAAA,CAAU,EAAA,GAAM;AACd,IAAA,GAAA,CAAI,OAAA,CAAQ,OAAA,EAAS,OAAA,CAAQ,OAAA,CAAQ,wBAAA,EAA0B,KAAA,CAAM,kBAAA;AAAA,EACvE,CAAA,EAAG,CAAC,KAAA,CAAM,kBAAkB,CAAC,CAAA;AAE7B,EAAAA,8BAAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,GAAA,CAAI,IAAA,EAAM;AACR,MAAA,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAM,KAAA;AAAA,IACrB;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,KAAK,CAAC,CAAA;AAEhB,EAAAA,8BAAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,GAAA,CAAI,KAAA,GAAQ,KAAA,CAAM,gBAAA,EAAkB;AAClC,MAAA,IAAA,CAAK,iBAAA,EAAmB,KAAA,CAAM,gBAAA;AAAA,IAChC;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,gBAAgB,CAAC,CAAA;AAE3B,EAAAA,8BAAAA,CAAU,EAAA,GAAM;AACd,IAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,GAAA,CAAI,KAAA,GAAQ,KAAA,CAAM,SAAA,IAAa,KAAA,CAAA,EAAW;AACxC,MAAA,IAAA,CAAK,WAAA,EAAa,KAAA,CAAM,QAAA;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,QAAQ,CAAC,CAAA;AAEnB,EAAA,uBACEC,6BAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,YAAA;AAAA,MACL,SAAA,EAAW,KAAA,CAAM,SAAA;AAAA,MACjB,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,GAAG,KAAA,CAAM,MAAM;AAAA,IAAA;AAAA,EACpE,CAAA;AAEJ;AFaA;AACE;AACA;AACF,6EAAC","file":"/private/var/folders/5j/p3g3j18x2w3byrl5wtnk94tc0000gn/T/xmax-web-release-NxUj61/source/packages/xmax-sdk/dist/react/index.cjs","sourcesContent":[null,"import {\n VideoContentMode,\n XmaxRealtimeVideoView,\n type RealtimeVideoTrack,\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 * 容器样式。\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 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 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 * 容器样式。\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 return (\n <div\n ref={containerRef}\n className={props.className}\n style={{ position: \"relative\", overflow: \"hidden\", ...props.style }}\n />\n );\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  XmaxRealtimeVideoView,
3
3
  XmaxVideoView
4
- } from "../chunk-4O5BSMUX.js";
4
+ } from "../chunk-JGDZ3RD3.js";
5
5
 
6
6
  // src/react/XmaxRealtimeVideo.tsx
7
7
  import {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xmaxai/web-sdk",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "license": "MIT",
5
5
  "description": "XmaxSDK for Web — Realtime Interactive Video Generation",
6
6
  "type": "module",