import { default as Stream } from '../stream'; import { default as Logger } from '../../tools/log/logger'; import { CaptureStatus, ContentTrackConfig, IEnableStreamConfig, IReturnResult, IStreamChangeType, IStreamConfig, StreamKind, XYDeviceEventKey, XYStreamParameterConfig, XYTrackEventKey } from '../../type/index'; import { default as Peer } from '../peer/index'; import { XYEmitter } from '@xylink/xy-toolkit'; declare class BaseTrack extends XYEmitter { streamInstance: Stream; logger: Logger; streams: IStreamConfig[]; previewStreams: IStreamConfig[]; pipelineStreams: IStreamConfig[]; contentStreams: IStreamConfig[]; constructor(streamInstance: Stream); getMediaStreams(): { previewStreams: IStreamConfig[]; streams: IStreamConfig[]; pipelineStreams: IStreamConfig[]; contentStreams: IStreamConfig[]; }; /** * 获取最大的分辨率流配置 * * 规则:按照从大往小的采集流程 * 1、视频+音频,使用视频的StreamConfig * 2、仅音频,使用音频的StreamConfig * * @param { CaptureStatus } enableVideo - 是否启用视频 * @param { CaptureStatus } enableAudio - 是否启用音频 */ getEnableStreamConfig(enableVideo: CaptureStatus, enableAudio: CaptureStatus): IEnableStreamConfig; /** * 更新流 * * 存在两种情况: * 1、如果是未经过插件的流,则每次都会生成新的mediaStream,包含videoTrack和audioTrack * 2、如果是经过插件处理的流,则每次生成的新的mediaStream,其中videoTrack或者audioTrack可能是重复使用 * * @param { MediaStream | null } mediaStream - 基础流 */ setStreams(mediaStream: MediaStream | null): Promise; /** * 设置发送画面流 * * @param { MediaStream | null } mediaStream - 基础流 * @param { StreamKind } streamKind - 处理对应类型的Stream,可选:Video/Audio/ALL */ setRemoteStreams(mediaStream: MediaStream | null, streamKind: StreamKind): Promise; /** * 设置预览画面流 * * @param { MediaStream | null } stream - 基础流 */ setPreviewStream(stream: MediaStream | null): Promise; /** * Setting Content Stream * * @param { MediaStream } stream - Screen stream */ setContentStreams(stream: MediaStream): Promise; /** * Remove Track of Streams * * @param { MediaStream[] } streamList - Stream列表 * @param { StreamKind } kind - 流的类型 */ removeTracks(streamList: MediaStream[], kind: StreamKind): void; /** * 获取Video可用的流配置 * * @param { IStreamConfig[] } streams - 流配置列表 * @returns { IStreamConfig } - 可用的流配置 */ private getEnableVideoStreamConfig; /** * 获取Audio可用的流配置 * * @param { IStreamConfig[] } streams - 流配置列表 * @returns { IStreamConfig } - 可用的流配置 */ private getEnableAudioStreamConfig; /** * 获取Content可用的流配置 * * @returns { IStreamConfig } - 可用的流配置 */ getEnableContentStreamConfig(enableVideo: CaptureStatus, enableAudio: CaptureStatus): IEnableStreamConfig; /** * 初始化流配置 */ initStreamsConfig(): void; /** * 创建预览流配置 */ initPreviewStreamConfig(): void; /** * 创建发送N路流配置 */ initRemoteStreamsConfig(): void; /** * Create pipeline streams config */ initPipelineStreamsConfig(): void; /** * Create content senders config */ initContentStreamsConfig(config: ContentTrackConfig): void; private getIndexFromStreamChange; /** * 重置StreamConfig状态为默认状态 * * @param { StreamKind } type - 需要重置的流类型 */ resetStreamsConfigStatus(type: StreamKind): void; /** * 媒体网关发给WEB JS的视频流的分辨率、带宽信息、帧率 * WEB收到消息后推送相应视频流/调整带宽 * * @param { IStreamChangeType } body - StreamChange消息内容 * @param { Peer } peer - Peer模块 * @param { IStreamConfig[] } streams - Streams列表 * @param { XYStreamParameterConfig } config - 编码器配置参数 */ setStreamParameters(body: IStreamChangeType, peer: Peer, streams: IStreamConfig[], config?: XYStreamParameterConfig): Promise; /** * Close all media streams * * @param streams */ closeStreams(streams: IStreamConfig[]): number; /** * Close all streams */ closeBaseTrack(): void; /** * 清空ContentTracks */ protected stopContentTracks(): void; /** * 结束所有Track轨道 * * @param { MediaStream | null } stream - 需要结束的Stream流 */ protected stopStreamTracks(stream: MediaStream | null): void; /** * 推送错误消息 * * @param { IReturnResult } msg - 错误消息 */ emitError(msg: IReturnResult): void; /** * 推送Event消息 * * @param { XYDeviceEventKey | XYTrackEventKey } key - 事件的Key * @param { T[] } args - 需要推送的数据内容 */ emitMessage(key: XYDeviceEventKey | XYTrackEventKey, ...args: T[]): void; /** * Track监听事件 * * @param { XYDeviceEventKey | XYTrackEventKey | string } key - 事件的Key * @param { Function } listener - 事件回调函数 * @param { number? } total - 可选,回调函数出发次数,默认是-1,表示无限制 */ on(key: XYDeviceEventKey | XYTrackEventKey | string, listener: Function, total?: number): void; /** * 取消监听事件 * * @param { XYDeviceEventKey | XYTrackEventKey | string } key - 监听器key */ off(key: XYDeviceEventKey | XYTrackEventKey | string): void; } export default BaseTrack;