import { XYDegradationPreference } from '../main/peer/index.type'; import { StreamFrameRate, StreamResolution } from './stream'; /** * 权限类型 * * @param CAMERA - 摄像头 * @param MICROPHONE - 麦克风 * @param SCREEN - 屏幕 */ export declare enum XYPermissionType { 'CAMERA' = "camera", 'MICROPHONE' = "microphone", 'SCREEN' = "screen" } /** * 创建自定义Track配置参数 * * @property { string } audioInputId - 可选,麦克风设备ID * @property { string } audioOutputId - 可选,扬声器设备ID * @property { string } videoInputId - 可选,摄像头设备ID * @property { boolean } muteAudio - 可选,是否开启/关闭麦克风入会,默认是false,开启麦克风 * @property { boolean } muteVideo - 可选,是否开启/关闭摄像头入会,默认是false,开启摄像头 * @property { MediaStreamTrack | null } videoTrack - 可选,自定义摄像头MediaStreamTrack数据,默认是null * @property { MediaStreamTrack | null } audioTrack - 可选,自定义麦克风MediaStreamTrack数据,默认是null */ export interface PeopleTrackConfig { audioInputId?: string; audioOutputId?: string; videoInputId?: string; muteAudio?: boolean; muteVideo?: boolean; videoTrack?: MediaStreamTrack | null; audioTrack?: MediaStreamTrack | null; } /** * 采集处理器配置 * * @property { string } handle - 处理器HandleID,不超过 1024 个字符的字符串 * @property { boolean } exposeOrigin - 是否允许捕获来源应用,设置为true,则捕获的 Web 应用的来源可能会向捕获的SDK应用公开 * @property { array } permittedOrigins - 设置观察源,默认是['*'],即可以看到所有观察源,如果需要指定观察源,则设置为对应的域名地址 */ export interface XYCaptureHandleConfig { handle: string; exposeOrigin?: boolean; permittedOrigins?: string[]; } /** * 分享内容时默认选择的分享Tab类型 * * @param BROWSER browser - 浏览器标签 * @param MONITOR monitor - 屏幕 * @param WINDOW window - 应用 */ export declare enum XYDisplaySurface { 'BROWSER' = "browser", 'MONITOR' = "monitor", 'WINDOW' = "window" } /** * 分享功能开关控制 * * @param exclude - 排除功能 * @param include - 包含功能 */ export declare enum XYDisplaySwitch { 'EXCLUDE' = "exclude", 'INCLUDE' = "include" } /** * 创建Content Track配置参数 * * @property { boolean } screenAudio - 可选,是否启用共享时采集系统声音,默认是true,采集系统音频 * @since 4.0.0 * 兼容:Chrome/Edge:v107+ * @property { XYDisplaySurface } displaySurface - 可选,分享内容的类型,选择:browser(浏览器标签)、monitor(屏幕)、window(应用),默认是monitor屏幕 * @since 4.0.0 * 兼容:Chrome/Edge:v107+ * @property { boolean } preferCurrentTab - 可选,是否强制仅共享当前应用选项卡源,默认是false,不强制 * @since 4.0.0 * 兼容:Chrome/Edge:v94+ * @property { XYDisplaySwitch } monitorTypeSurfaces - 可选,共享屏幕时,选择是否排除“屏幕”源,默认是include,不排除,设置为exclude代表排除屏幕选项 * @since 4.0.0 * 兼容:Chrome/Edge:v119+ * @property { XYDisplaySwitch } selfBrowserSurface - 可选,共享屏幕时,选择是否排除当前应用选项卡,默认是include,不排除,设置为exclude代表排除当前应用选项卡 * @since 4.0.0 * 兼容:Chrome/Edge:v112+ * @property { XYDisplaySwitch } surfaceSwitching - 可选,共享屏幕时,选择是否允许浏览器标签之间提供控制器进行动态切换,默认是include,允许切换,设置为exclude代表不允许切换 * @since 4.0.0 * 兼容:Chrome/Edge:v105+ * @property { CaptureController } controller - 可选,共享屏幕时,指定CaptureController对象实例,可用于进一步操作捕获会话的行为,例如动态设置聚焦窗口行为 * @since 4.0.0 * 兼容:Chrome/Edge:v109+ * @property { XYCaptureHandleConfig } handleConfig - 可选,共享屏幕时,设置共享屏幕处理器配置 * @since 4.0.5 * @property { string } electronSourceId - 可选,Electron应用下共享屏幕时,指定采集源ID,默认是null,不指定 * @since 4.0.5 * @property { XYDegradationPreference } preference - 可选,共享屏幕时,设置共享屏幕的编码优先级,支持:maintain-framerate、maintain-resolution、balanced,默认是maintain-resolution,代表优先保持分辨率;maintain-framerate代表优先保持帧率,balanced代表平衡模式,优先保持分辨率,当帧率过低时,会降低分辨率; * @since 4.0.5 * @property { StreamFrameRate } maxFrameRate - 可选,共享屏幕时,设置共享屏幕的最大帧率,默认是FR30,代表30帧,支持30/15/8帧率 */ export interface ContentTrackConfig { screenAudio?: boolean; displaySurface?: XYDisplaySurface; preferCurrentTab?: boolean; monitorTypeSurfaces?: XYDisplaySwitch; selfBrowserSurface?: XYDisplaySwitch; surfaceSwitching?: XYDisplaySwitch; controller?: any | null; handleConfig?: XYCaptureHandleConfig | null; electronSourceId?: string; preference?: XYDegradationPreference; maxFrameRate?: StreamFrameRate; } /** * Track类型 */ export declare enum TrackLibType { 'PEOPLE' = "PEOPLE", 'CONTENT' = "CONTENT" } /** * 分辨率枚举视频流 */ export type IInitContentStream = { [key in StreamResolution]: MediaStream; }; /** * AI插件类型 * * @param VIDEO_INPUT - 视频流插件 * @param AUDIO_INPUT - 音频流插件 * @param CONTENT_INPUT - 内容输入 */ export declare enum PluginType { VIDEO_INPUT = "VIDEO_INPUT", AUDIO_INPUT = "AUDIO_INPUT", CONTENT_INPUT = "CONTENT_INPUT" } /** * AI插件处理器Track数据结构 * * @property { MediaStreamTrack | null } track - MediaStreamTrack数据 */ export interface IProcessTrack { track: MediaStreamTrack | null; } /** * AI插件处理器视频Track数据结构 * * @property { MediaStreamTrack | null } track - MediaStreamTrack数据 * @property { number } width - track的实际宽度 * @property { number } height - track的实际高度 */ export interface IVideoProcessTrack extends IProcessTrack { width: number; height: number; } /** * 缓存流设置 * * @property { number } width - track的实际宽度 * @property { number } height - track的实际高度 */ export interface XYCacheStreamSetting { width: number; height: number; } /** * Electron桌面捕获器的配置选项 * * @property { Array<'screen' | 'window'> } types - 要捕获的源类型数组,默认是['screen', 'window'],screen代表屏幕,window代表窗口 * @property { { width: number; height: number } | undefined } thumbnailSize - 缩略图尺寸,可选,默认是{ width: 160, height: 90 } * @property { boolean | undefined } fetchWindowIcons - 是否获取窗口图标,屏幕源不支持,可选,默认是true */ export interface XYDesktopCapturerOptions { types?: Array<'screen' | 'window'>; thumbnailSize?: { width: number; height: number; }; fetchWindowIcons?: boolean; } /** * 桌面捕获源接口 * 定义从主进程获取的桌面捕获源数据结构 * 包含窗口/屏幕ID、名称、缩略图、显示器ID等信息 * * @property { string } id - 捕获源ID * @property { string } name - 捕获源名称 * @property { string } display_id - 显示器ID * @property { Uint8Array | null } thumbnail - 捕获源缩略图,如果有值,则为base64字符串 * @property { Uint8Array | null } appIcon - 捕获源应用图标,如果有值,则为base64字符串 * @property { 'screen' | 'window' } sourceType - 捕获源类型 */ export interface XYDesktopCapturerSource { id: string; name: string; display_id: string; thumbnail: Uint8Array | null; appIcon: Uint8Array | null; sourceType: 'screen' | 'window'; } /** * 媒体流约束配置 * * @property { { chromeMediaSource: string; chromeMediaSourceId?: string; } } video - 视频约束配置 * @property { { chromeMediaSource: string; chromeMediaSourceId?: string; } } audio - 音频约束配置 */ export interface XYMediaStreamConstraints { video: { mandatory?: { chromeMediaSource?: string; chromeMediaSourceId?: string; maxWidth?: number; maxHeight?: number; maxFrameRate?: number; minWidth?: number; minHeight?: number; minFrameRate?: number; }; }; audio?: { mandatory?: { chromeMediaSource?: string; chromeMediaSourceId?: string; }; }; }