UNPKG

nertc-electron-sdk

Version:
60 lines (59 loc) 3.02 kB
import { IRenderer } from './index'; export declare type StreamType = 'main' | 'sub' | 'third' | 'fourth'; export interface DisplayConfig { /** 视频缩放模式:0=等比缩放(Fit), 1=非等比填满(Fill), 2=等比裁剪(Crop) */ scalingMode?: number; /** JS 渲染层镜像(CSS transform rotateY 180deg),与 C++ SDK 镜像并存 */ mirrorEnabled?: boolean; /** 视频 letterbox 区域背景色,CSS 颜色字符串,默认 'black' */ backgroundColor?: string; } /** * RendererManager — 渲染器单例管理器(框架无关) * * 职责: * - 管理所有视频流的渲染器实例(按 uid + streamType 索引) * - 统一管理 DisplayConfig(scalingMode / mirrorEnabled / backgroundColor) * - 对 React 或其他 UI 框架提供独立的动态更新接口 * * 与 C++ SDK mirror 的关系: * - C++ setLocalVideoMirrorMode / setLocalVideoMirrorModeWithType:影响帧数据 mirror 标志, * 决定远端用户所见(编码级别),同时也影响本地显示(通过帧头 mirror 位) * - RendererManager.setMirrorMode:JS 层 CSS transform,纯本地显示覆盖, * 不影响编码,不影响远端所见。forceMirror !== undefined 时优先于帧数据 mirror 标志 */ export declare class RendererManager { private static _instance; private entries; private renderMode; private constructor(); static getInstance(): RendererManager; private key; /** 设置渲染器类型(1=WebGL, 2=Software),在 bind 之前调用 */ setRenderMode(mode: number): void; /** * 绑定渲染器到 DOM 元素,并应用初始 DisplayConfig * 如果该 (uid, streamType) 已有渲染器,先销毁再重建 */ bind(uid: string, streamType: StreamType, element: Element, config?: DisplayConfig): void; /** 解绑并销毁渲染器 */ unbind(uid: string, streamType: StreamType): void; /** 推入视频帧数据(由 SDK 帧回调调用) */ drawFrame(uid: string, streamType: StreamType, imageData: any): void; /** 动态更新缩放模式(0=Fit, 1=Fill, 2=Crop) */ setScalingMode(uid: string, streamType: StreamType, mode: number): void; /** * 动态更新 JS 层镜像(CSS transform) * 与 C++ SDK 的 setLocalVideoMirrorMode 并存,互不影响 */ setMirrorMode(uid: string, streamType: StreamType, enabled: boolean): void; /** 动态更新背景色(letterbox 区域),立即生效 */ setBackgroundColor(uid: string, streamType: StreamType, color: string): void; /** 批量更新 DisplayConfig */ setConfig(uid: string, streamType: StreamType, config: DisplayConfig): void; /** 读取当前 DisplayConfig(返回副本) */ getConfig(uid: string, streamType: StreamType): DisplayConfig | null; hasRenderer(uid: string, streamType: StreamType): boolean; /** 仅供调试:获取渲染器实例 */ getRenderer(uid: string, streamType: StreamType): IRenderer | null; }