import { IStreamChangeType, IGetMediaStreams, StreamKind, OperateType, IInitContentStream, DualStreamMsg, AnalyserConfig, XYBaseModule } from '../../type/index'; import { SnapshotParams, SnapshotResult } from '@xylink/xy-toolkit'; import { default as Peer } from '../peer/index'; import { default as Logger } from '../../tools/log/logger'; import { default as XYRTCClient } from '../client'; import { default as VideoAudioTrack } from '../track/videoAudioTrack'; import { default as ContentTrack } from '../track/contentTrack'; import { AnalyserManager } from '../../tools/analyser/manager'; export default class Stream implements XYBaseModule { logger: Logger; private clientInstance; private videoAudioTrack; private contentTrack; private initContentStream; private analyserManager; private analyserMap; constructor(client: XYRTCClient); /** * 获取本地预览流 * * @returns { IStreamConfig[] } 本地预览流 */ getLocalStream(): import('../../type/index').IStreamConfig[] | undefined; /** * Get client instance */ getClient(): XYRTCClient; /** * Get device manager */ getDeviceManager(): import('../device').default | undefined; /** * Get layout manager */ getLayoutManager(): import('../layout').default; /** * Get local roster */ getSelfRoster(): import('../../type/index').IRoster; /** * Get video and audio track */ getVideoAudioTrack(): VideoAudioTrack | null; /** * Get content track */ getContentTrack(): ContentTrack | null; /** * Get init content stream */ getInitContentStream(): IInitContentStream; /** * Get audio stream config * * @returns { IStreamConfig } - Audio stream config */ getAudioStreamConfig(): import('../../type/index').IStreamConfig | undefined; /** * 获取对应类型的StreamConfig * * @param { StreamKind } streamKind - stream类型 * @returns { IStreamConfig } - 对应类型的StreamConfig */ getNormalStreamConfig(streamKind: StreamKind): import('../../type/index').IStreamConfig | undefined; /** * 销毁Stream模块 */ destroy(): Promise; /** * 获取已注册插件 * * @returns { videoPlugin: any[]; audioPlugin: any[] } - 视频和音频插件 */ getPlugin(): { videoPlugin: any[]; audioPlugin: any[]; contentInputPlugin: any[]; }; getAudioAnalyserManager(): AnalyserManager; /** * Get media streams * * @returns { IGetMediaStreams } - All MediaStreams */ getMediaStreams(): IGetMediaStreams; /** * 动态创建摄像头和麦克风轨道(VideoAudioTrack)实例 */ createVideoAudioTrack(): Promise; /** * 创建封装后的Content Track模块 */ createContentTrack(): Promise; /** * 媒体网关发给WEB JS的视频流的分辨率、带宽信息、帧率 * WEB收到消息后推送相应视频流/调整带宽 * * @param { IStreamChangeType } body StreamChange消息内容 * @param { Peer } peer Peer模块 * @param { number } mediaGroupId 当前stream是否是content画面 */ handleChangeStream(body: IStreamChangeType, peer: Peer, mediaGroupId: number): Promise; /** * 麦克风/摄像头开启/关闭操作 * * @param { OperateType } type - 操作类型 * @returns */ videoAudioProcess(type: OperateType): Promise; /** * Close people track */ closeVideoAudioStream(): void; /** * Close content track */ closeContentStream(): void; clearContentTrack(): void; /** * 切换低性能模式,重新采集&发送People和Content的能力 */ processLowPerformance(): Promise; /** * 处理Content状态控制消息 * * @param { DualStreamMsg } data - 信令消息 */ handleDualStreamMessage(data: DualStreamMsg): void; /** * 获取视频的Stream数据 * * @param { string } rosterId - 参会者唯一ID,通过roster数据获取,没有则获取本地视频流 * @return { MediaStream || null } - 获取到的Stream */ getVideoStream(rosterId?: string): MediaStream | null; /** * 获取音频的Stream数据 * * @param { string } rosterId - 参会者唯一ID,通过roster数据获取,没有则获取本地音频流 * @return { MediaStream || null } - 获取到的Stream */ getAudioStream(rosterId?: string): MediaStream | null; /** * 通过TrackId找到对应的MediaStream数据 * * @private * @param { string } replaceTrackId - trackId * @param { ICustomStreamTrack[] } tracks - StreamList缓存的流列表数据 * @returns { MediaStream | null } - 返回媒体流数据,如果没有找到,则返回null */ private getMediaStreamByTrackId; /** * 获取音频的分析器实例 * 使用场景:获取远端或本地端音频音量大小 * * @param { string } id - 参会者Layout Id,通过layout事件列表获取 * @param { AnalyserConfig } config - Analyser分析器构造器配置 * @return { AudioAnalyser | null } - 获取到的Stream */ getAudioAnalyser(id?: string, config?: AnalyserConfig): import('../..').AudioAnalyser | null; /** * 销毁音频分析器,释放资源 * * @param { string } id - 参会者Layout Id或rosterKey,通过layout或roster相关事件列表获取 */ removeAudioAnalyser(id?: string): void; /** * 指定画面屏幕截图 * * @param { SnapshotParams } params 参数 * @property { string } params.id - 参会者Layout Id,通过layout事件列表获取 * @property { string } params.imageType - 图片格式, 默认'image/png' * @property { number } params.compressLevel - 图片质量,0-1 * * @returns { Promise } - 截图信息 */ getSnapshot(params: SnapshotParams): Promise; }