nertc-electron-sdk
Version:
nertc-electron-sdk
60 lines (59 loc) • 3.02 kB
TypeScript
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;
}