import { ILayout } from './index'; import { IStreamConfig } from './stream'; /** * 网络质量信号等级 * * @param Bad 1 - 非常差, loss > 30 || rtt >500 || 心跳连续3次以上超时 * @param Poor 2 - 差, 20 < loss < 30 || 300 < rtt < 500 || 心跳连续3次以上超时 * @param Good 3 - 一般, 10 < loss < 20 || 100 < rtt < 300 || 心跳连续2次以上超时 * @param Excellent 4 - 很好, loss < 10 || rtt < 100 */ export declare enum NetworkQualityLevel { Bad = 1, Poor = 2, Good = 3, Excellent = 4 } /** * 会议质量上报 基础数据 * * @property { string } callNumber 会议号callUri * @property { string } deviceId * @property { string } meetingId 会议ID * @property { string } osVersion 终端系统版本; 目前上报的是navigator.userAgent * @property { string } sockProto 终端接入协议方式 udpProto * @property { string } swVersion 终端软件版本 * @property { string } cdrVersion 统计版本号 目前传的是10 * @property { string } deviceType 设备类型 17 * */ export interface IMeetingQualityData { callNumber: string; deviceId: string; meetingId: string; osVersion: string; sockProto: string; swVersion: string; cdrVersion: number; deviceType: number; } /** * video 数据 * * @property { number } fr 帧率 * @property { number } height 高 * @property { number } width 宽 */ export interface IQualityVideoStream { fr: number; height: number; width: number; } /** * 远端video数据 * * @property { number } participantId * @property { IQualityVideoStream[] } videoStream */ export interface IQualityRecvStreams { participantId: number; videoStream: IQualityVideoStream[]; } /** * 本地发送video数据 * * @property { string } callUri * @property { number } participantId * @property { number } sessionId 媒体提供 * @property { IQualityVideoStream[] } audioStream * @property { IQualityVideoStream[] } videoStream */ export interface IQualitySendStreams { callUri: string; participantId: number; sessionId: number; audioStream: IQualityVideoStream[]; videoStream: IQualityVideoStream[]; } /** * video质量相关数据 统计相同分辨率的路数、平均帧率 * * @property { number } Height 分辨率-高 * @property { number } Width 分辨率-宽 * @property { number } framerate 当前分辨率4s内平均帧率 * @property { number } resNum 当前分辨率的路数 * @property { number } resolution 分辨率 【似乎没用】 */ export interface IVideoQuality { Height: number; Width: number; framerate: number; resNum: number; resolution: number; } /** * 远端网络质量信号等级 * * @property { string } fromCallUri - 提供质量的callUri * @property { number } fromPid - 提供质量的pid * @property { NetworkQualityLevel } networkLevel - 网络质量信号等级 * @property { string } toCallUri - 发送给远端的CallUri * */ export interface INetworkParameter { fromCallUri: string; fromPid: number; networkLevel: NetworkQualityLevel; toCallUri: string; } /** * WebWorker消息类型 * * @param STATS - 质量数据 * @param INIT - 初始化模块 * @param DESTROY - 销毁操作 * @param STATS_CANDIDATE - 协商网络信息 * @param STATS_VIDEO_RECEIVER - 视频接收数据 * @param STATS_AUDIO_RECEIVER - 音频接收数据 * @param STATS_SENDER - 发送数据 * @param INTERNALS - 质量数据 * @param REPORT_INTERNALS - 质量上报数据 * @param REPORT_NETWORK_LEVEL - 网络质量等级 */ export declare enum QualityOperateType { STATS = "STATS", INIT = "INIT", DESTROY = "DESTROY", STATS_CANDIDATE = "STATS_CANDIDATE", STATS_VIDEO_RECEIVER = "STATS_VIDEO_RECEIVER", STATS_AUDIO_RECEIVER = "STATS_AUDIO_RECEIVER", STATS_SENDER = "STATS_SENDER", INTERNALS = "INTERNALS", REPORT_INTERNALS = "REPORT_INTERNALS", REPORT_NETWORK_LEVEL = "REPORT_NETWORK_LEVEL" } /** * 实时讲话人简化版本数据,用户匹配audio internal数据 */ export interface IAudioSpeakerInfo { name: string; endpointId: string; trackId: string; } /** * 传递给Worker的原始数据 * * @property { ILayout } layoutItem - layout成员数据 * @property { RTCStatsReport[] } - statsList stats质量数据 * @property { MediaTrackSettings } - trackSetting Track设置 * @property { string } trackId - trackId * @property { boolean } isContent - 是否是content * @property { IStreamConfig } streamConfig - 流配置 * @property { boolean } isFirefox - 是否是火狐浏览器 * @property { IAudioSpeakerInfo } audioSpeaker - audio speaker讲话人信息 */ export interface IWorkerVideoReceiver { layoutItem?: ILayout; statsList?: RTCStatsReport[]; trackSetting?: MediaTrackSettings; trackId?: string; isContent?: boolean; streamConfig?: IStreamConfig; isFirefox?: boolean; audioSpeaker?: IAudioSpeakerInfo; } /** * 传递给Worker的结构数据 * * @property { IVideoReceiverMessage[] } workerVideoReceiver - worker视频接收数据 * @property { number } timestamp - 时间戳 */ export interface IVideoReceiverMessage { workerVideoReceiver: IWorkerVideoReceiver[]; timestamp: number; } /** * Quality配置 * * @property { number } logInterval - 日志间隔 * @property { number } reportInterval - 质量上报时间间隔 */ export interface IQualityConfig { logInterval: number; reportInterval: number; }