UNPKG

zego-express-engine-webrtc

Version:

zego webrtc express sdk

1,708 lines (1,707 loc) 49.7 kB
/// <reference types="node" /> import type { TrafficControlFocusOnMode, ZegoGeoFenceType, ZegoStreamRelayCDNInfo, ZegoWebPublishOption, PublisherVideoEncoderChangedCallBack, ZegoWebPlayOption } from "../../code/zh/ZegoExpressEntity.web"; import type { ZegoInspectFlagType as ZegoWXInspectFlagType } from "../../code/zh/ZegoExpressEntity.wechat"; import type { StreamHandler } from "./streamHandler"; export declare const PROTO_VERSION: any; export declare const ROOMVERSION: any; export declare const BUILD_TIME: any; export declare enum ENUM_LOG_LEVEL { debug = 0, info = 1, warn = 2, error = 3, report = 99, disable = 100 } export declare enum ZegoFencing { CN = 2, NA = 3, EU = 4, AS = 5, IN = 6, NCN = 7 } export declare const LOG_LEVEL: { debug: number; info: number; warn: number; error: number; report: number; disable: number; }; export declare enum ENUM_REMOTE_TYPE { disable = 0, websocket = 1, https = 2 } export interface LogConfig { logLevel?: "debug" | "info" | "warn" | "error" | "report" | "disable"; logURL?: string; remoteLogLevel?: "debug" | "info" | "warn" | "error" | "report" | "disable"; } export interface WebConfig { nickName?: string; logLevel?: ENUM_LOG_LEVEL; logUrl?: string; remoteLogLevel?: ENUM_LOG_LEVEL; debug?: boolean; qualityInterval?: number; userUpdate?: boolean; } export interface WxConfig { nickName?: string; logLevel?: ENUM_LOG_LEVEL; logUrl?: string; remoteLogLevel?: ENUM_LOG_LEVEL; debug?: boolean; userUpdate?: boolean; } export interface WxParams { success: Function; fail: Function; complete: Function; } export interface User { userID: string; userName: string; } export interface RoomConfig { maxMemberCount?: number; userUpdate?: boolean; } export declare enum SDKProjectType { SDKProject_ZegoWebRTC = 6, SDKProject_ZegoMiniProgram = 7 } interface CapabilityError { name?: string; message?: string; } export interface CapabilityDetection { webRTC: boolean; customCapture: boolean; camera: boolean; microphone: boolean; videoCodec: { H264: boolean; H265: boolean; VP8: boolean; VP9: boolean; }; screenSharing: boolean; errInfo: { webRTC?: CapabilityError; customCapture?: CapabilityError; camera?: CapabilityError; microphone?: CapabilityError; extendedDate?: string; }; } export interface CapabilityDetectionSingle { result: boolean; errInfo: { webRTC?: CapabilityError; customCapture?: CapabilityError; camera?: CapabilityError; microphone?: CapabilityError; extendedDate?: string; }; } export interface SupportVideoCodeSucCall { (rtcCodec: { webRTC: boolean; H264: boolean; VP8: boolean; VP9: boolean; H265: boolean; }, error?: any): void; } export type SupportVideoType = "VP8" | "H264"; export declare const ERROR_CODES: { ROOM_SESSION_ID_ERR: number; FETCH_TRANS_UNKNOWN_CHANNEL: number; FETCH_TRANS_UNKNOWN_TYPE: number; FETCH_TRANS_WRONG_SEQ: number; }; export interface DataStatisticsItemEvent { event: string; event_time: number; time_consumed?: number; msg_ext?: { [index: string]: string | number; }; } export interface DataStatisticsItem { event_time: number; time_consumed: number; error: number; message: string; events: DataStatisticsItemEvent[]; seq?: number; event_id?: string; msg_ext?: any; itemtype?: string; event?: string; client_type?: E_CLIENT_TYPE; } export interface DataStatistics { [index: string]: DataStatisticsItem; } export interface TurnSecret { turn_username: string; turn_auth_key: string; } export declare enum ENUM_SIGNAL_STATE { disconnected = 0, connecting = 1, connected = 2 } export declare const ENUM_RESOLUTION_TYPE: { LOW: { width: number; height: number; frameRate: number; bitRate: number; }; MEDIUM: { width: number; height: number; frameRate: number; bitRate: number; }; HIGH: { width: number; height: number; frameRate: number; bitRate: number; }; }; export declare const ENUM_SCREEM_RESOLUTION_TYPE: { LOW: { frameRate: number; bitRate: number; }; MEDIUM: { frameRate: number; bitRate: number; }; HIGH: { frameRate: number; bitRate: number; }; }; export declare const enum ENUM_PUBLISH_STATE { start = 0, waitingSessionRsp = 1, waitingOfferRsp = 2, waitingServerAnswer = 3, waitingServerICE = 4, connecting = 5, publishing = 6, stop = 7 } export declare const enum ENUM_PLAY_STATE { start = 0, waitingSessionRsp = 1, waitingOfferRsp = 2, waitingServerAnswer = 3, waitingServerICE = 4, connecting = 5, playing = 6, stop = 7 } export declare const enum ENUM_PLAYER_STATE { start = 0, playing = 1, stop = 2 } export declare const enum ENUM_PLAY_STATE_NEGO { stop = 0, start = 1, waiterAnswer = 2, waitingCandidate = 3, sendCandidate = 4, iceConnected = 5, iceDisconnected = 6, iceClosed = 7, iceFailed = 8 } export declare enum ENUM_PROBE_STATE { tryProbe = 0, probed = 2 } export declare enum SignalResourceType { CDN = 0, RTC = 1, L3 = 2, DG = 3 } export declare enum ProtocolType { UDP = 0, RTMP = 1, FLV = 2, HLS = 3, WEBRTC = 4 } export declare enum HandleTrackType { replaceNew = 0, changeResolution = 1 } export interface SignalConfig { path: string; query: string; encode?: boolean; messageType?: number; } export interface VideoInfo { minBitrate: number; width: number; height: number; frameRate: number; bitRate: number; channelCount: number; audioBitrate: number; startBitrate: "default" | "target"; keyFrameInterval: number; contentHint: string; } export interface UpdateVideoInfo { width?: number; height?: number; frameRate?: number; bitRate?: number; startBitrate?: "default" | "target"; minBitrate?: number; keyFrameInterval?: number; channelCount?: number; audioBitrate?: number; contentHint?: string; } export declare const ENUM_CONNECT_STATE: { disconnect: number; connecting: number; connected: number; }; export declare const enum SessionType { Publish = 0, Play = 1, NetProb = 2 } export interface CreateSessionParams { type: SessionType; mode: number; streamID: string; strAuthParam: string; serverHost: string; params: string; roomID: string; geo: Geo; transCodecID?: number; transCodecSuffix?: string; } export interface CreateSessionWithSdpOptions { seq: number; type: SessionType; mode: number; streamId: string; videoInfo?: { [key: string]: any; }; strAuthParam: string; sdp?: string; miniSdp?: Uint8Array; serverHost: string; playBufLevel?: number; params: string; paramsExt: ParamsExt; roomID: string; geo: Geo; transCodecID?: number; transCodecSuffix?: string; } export interface DispatchGwNodesParams { type: SessionType; streamID: string; geo: Geo; transCodecID?: number; transCodecSuffix?: string; } export interface ParamsExt { keyframe_intv?: number; min_play_buf_level_ms?: number; tc_type?: number; video_content_type?: number; sei_filter_pass?: number; client_class_type?: number; video_stream_type?: number; zg_proxy?: number; coturn_internal?: number; auto_switch_turn_type?: number; ktv_device_delay?: number; sync_ntp?: number; play_jitter_level?: number; tc_focuson_mode?: TrafficControlFocusOnMode; tc_min_video_kbps?: number; proto_flags?: number; adaptive_switch?: number; adaptive_template_id_list?: string; } export declare const SEND_MSG_TIMEOUT = 1; export declare const SEND_MSG_RESET = 2; export declare const SEND_MSG_FAILED = 3; export declare const MAX_TRY_CONNECT_COUNT = 3; export declare const MAX_TRY_HEARTBEAT_COUNT = 5; export declare const MAX_STREAM_ID_LENGTH = 256; export declare const MAX_USER_ID_LENGTH = 64; export declare const MAX_USER_NAME_LENGTH = 256; export declare const MAX_ROOM_ID_LENGTH = 128; export declare const MAX_MESSAGE_LENGTH = 1024; export declare const MAX_MIX_TASK_ID_LENGTH = 256; export declare const MAX_TRANS_TYPE_LENGTH = 128; export declare const MAX_TRANS_DATA_LENGTH: number; export declare const MAX_RETRY_CONNECT_INTERVAL = 12; export declare const MIN_QUALITY_INTERVAL = 1000; export declare const MIN_MAX_CHANNELS = 1; export declare const MAX_MAX_CHANNELS = 50; export declare const MIN_MAX_RETRY_TIME = 1; export declare const MAX_MAX_RETRY_TIME: number; export declare const ENUM_PUBLISH_STREAM_STATE: { waiting_url: number; tryPublish: number; update_info: number; publishing: number; stop: number; retryPublish: number; }; export declare const ENUM_STREAM_SUB_CMD: { liveNone: number; liveBegin: number; liveEnd: number; liveUpdate: number; }; export declare const enum ENUM_STREAM_UPDATE_TYPE { deleted = 0, added = 1 } export declare enum ENUM_RUN_STATE { logout = 0, trylogin = 1, login = 2 } export declare enum USER_RUN_STATE { logout = 0, trylogin = 1, login = 2, reconnect = 3 } export declare enum ENUM_NETWORK_STATE { offline = 0, online = 1 } export declare const STREAM_DELETE_REASON: any; export interface StreamQuality { videoBitrate: number; videoFramesDecoded?: number; videoFramesDropped?: number; videoPacketsLostRate?: number; videoQuality?: number; videoWidth?: number; videoHeight?: number; audioBitrate: number; audioJitter?: number; audioLevel?: number; audioPacketsLost?: number; audioPacketsLostRate?: number; audioQuality?: number; audioSamplingRate?: number; audioSendLevel?: number; playData?: number; videoFPS: number; frameHeight: number; frameWidth: number; videoTransferFPS: number; audioCodec: string; nackCount: number; pliCount: number; totalRoundTripTime: number; currentRoundTripTime: number; } export interface PublishQualityInfo { stream_id: string; session_id: number; video_width: number; video_height: number; infos: Array<PublishInfo>; room_id: string; evnvironment: number; room_session_id: number; resource_type: ResourceType; } declare enum ResourceType { UNKNOWN = 0, CDN = 1, RTC = 2, L3 = 3 } export interface PlayQualityInfo { stream_id: string; session_id: number; video_width: number; video_height: number; infos: Array<PlayInfo>; room_id: string; room_session_id: number; resource_type: ResourceType; } export interface PublishInfo { audio_bitrate: number; video_bitrate: number; video_capture_fps?: number; video_network_fps?: number; uplink_plr?: number; rtt?: number; audio_network_fps?: number; captured_sound_level?: number; audio_codec_name?: string; audio_FPS?: number; audio_input_level?: number; audio_level?: number; audio_mute_state?: string; audio_packets_lost?: number; audio_packets_lost_rate?: number; audio_quality?: number; audio_target_bitrate?: number; codec_implementation_name?: string; current_round_trip_time?: number; video_target_FPS?: number; video_transfer_FPS?: number; goog_actual_enc_bitrate?: number; goog_available_send_bandwidth?: number; goog_bandwidth_limited_resolution?: boolean; goog_cpu_limited_resolution?: boolean; goog_frame_height_input?: number; goog_frame_width_input?: number; goog_retransmit_bitrate?: number; goog_target_enc_bitrate?: number; muted?: boolean; nack_count?: number; volume?: number; paused?: boolean; pli_count?: number; sampling_rate?: number; send_level?: number; sink_id?: string; total_round_trip_time?: number; video_codec_name?: string; video_mute_state?: string; video_packets_lost?: number; video_packets_lost_rate?: number; video_quality?: number; video_target_bitrate?: number; sample_time_offset?: number; } export interface PlayInfo { audio_bitrate?: number; video_bitrate?: number; video_network_fps?: number; audio_break_count?: number; video_break_count?: number; downlink_plr?: number; peer_to_peer_plr: number; peer_to_peer_delay: number; audio_network_fps?: number; audio_break_duration?: number; video_break_duration?: number; audio_break_rate?: number; video_break_rate?: number; audio_break_cancel?: number; video_break_cancel?: number; rtt?: number; rendered_sound_level?: number; audio_break_cancel_duration?: number; video_break_cancel_duration?: number; audio_decode_time?: number; video_decode_time?: number; real_sampling_interval?: number; mos?: number; video_frames_decoded?: number; video_frames_dropped?: number; nack_count?: number; pli_count?: number; total_round_trip_time?: number; audio_codec_name?: string; audio_level?: number; audio_packets_lost?: number; audio_packets_lost_rate?: number; sampling_rate?: number; audio_quality?: number; video_quality?: number; video_transfer_FPS?: number; video_packets_lost?: number; video_packets_lost_rate?: number; video_codec_name?: string; goog_available_send_band_width?: string; codec_implementation_name?: string; video_mute_state?: string; audio_mute_state?: string; muted?: boolean; paused?: boolean; sink_id?: string; audio_jitter?: number; sample_time_offset?: number; } export interface CandidateStats { candidateType?: string; networkType?: string; relatedAddress?: string; relayProtocol?: string; url?: string; } export type CandidateStatsKey = keyof CandidateStats; export interface StreamInfo { streamID: string; user: User; extraInfo: string; urlsFLV: string; urlsRTMP: string; urlsHLS: string; urlsHttpsFLV: string; urlsHttpsHLS: string; } export interface ERRO { code: number; message: string; } export declare const MINIUM_HEARTBEAT_INTERVAL = 3000; export declare const ENUM_STREAM_UPDATE_CMD: { added: number; deleted: number; updated: number; }; export declare const SERVER_ERROR_CODE = 10000; export declare const ICE_DISCONNECT_MAX_TIME = 15000; export interface WaitingInfo { streamID: string; success: Function; error: Function | undefined; } export interface CdnPushConfig { type: "addpush" | "delpush" | "clearpush"; streamID: string; pushUrl: string; } export interface TransCodecConfig { playAddr: string; transCodecID: number; transCodecSuffix: string; retry: number; } export interface ChargeInfo { is_publishing?: number; play_stream_resolution_infos?: Array<ResolutionInfo>; play_max_audio_bitrate?: number; play_l3_max_audio_bitrate?: number; play_l3_stream_resolution_infos?: { video_width: number; video_height: number; count: number; }[]; no_playing?: number; } export interface ResolutionInfo { video_width: number; video_height: number; count: number; } export interface ChargeInfos { timestamp_offset_begin: number; timestamp_offset_end: number; timestamp_diff_flag: number; timestamp_diff: number; room_id: string; infos: Array<ChargeInfo>; } export interface ResolutionInfo { video_width: number; video_height: number; count: number; } export declare enum UpdateQualityType { publish_quality = 0, play_quality = 1, charge = 2 } export declare enum QUALITYLEVEL { low = 1, stantard = 2, hight = 3, custome = 4 } export interface MediaStreamConstraints { audio?: boolean; audioInput?: string; video?: boolean; facingMode?: "user" | "environment"; videoInput?: string; videoQuality?: QUALITYLEVEL; externalCapture?: boolean; height?: number | ConstraintExtend; frameRate?: number | ConstraintExtend; width?: number | ConstraintExtend; bitRate?: number; bitrate?: number; audioBitrate?: number; externalMediaStream?: MediaStream; noiseSuppression?: boolean; autoGainControl?: boolean; echoCancellation?: boolean; mediaSource?: "screen" | "application" | "window"; screen?: boolean; source?: HTMLElement | MediaStream; channelCount?: 1 | 2; startBitrate?: "default" | "target"; minBitrate?: number; sourceID?: string; videoOptimizationMode?: "default" | "motion" | "detail"; keyFrameInterval?: number; } export interface ConstraintExtend { exact?: number; ideal?: number; max?: number; min?: number; } export interface CameraConstraints { audio?: boolean; audioInput?: string; video?: boolean; height?: number | ConstraintExtend; frameRate?: number | ConstraintExtend; width?: number | ConstraintExtend; bitRate?: number; bitrate?: number; startBitrate?: "default" | "target"; minBitrate?: number; audioBitrate?: number; facingMode?: string; videoInput?: string; videoQuality?: QUALITYLEVEL; channelCount?: number; ANS?: boolean; AGC?: boolean; AEC?: boolean; videoOptimizationMode?: "default" | "motion" | "detail"; keyFrameInterval?: number; } export type ScreenConstrains = { audio?: boolean; videoQuality?: 1 | 2 | 3 | 4; bitRate?: number; bitrate?: number; frameRate?: number | ConstraintExtend; width?: number | ConstraintExtend; height?: number | ConstraintExtend; sourceID?: string; videoOptimizationMode?: "default" | "motion" | "detail"; startBitrate?: "default" | "target"; minBitrate?: number; captureElement?: HTMLElement; audioBitrate?: number; keyFrameInterval?: number; } | boolean; export type CustomConstrains = { source: HTMLMediaElement | MediaStream; bitRate?: number; bitrate?: number; audioBitrate?: number; channelCount?: number; videoOptimizationMode?: "default" | "motion" | "detail"; keyFrameInterval?: number; }; export interface Constraints { camera?: CameraConstraints; screen?: ScreenConstrains; custom?: CustomConstrains; } export interface ZegoStreamOptions { autoCapture?: boolean; autoPlay?: boolean; captureView?: HTMLElement; view?: HTMLElement; multiplacePreview?: boolean; videoBitrate?: number | { bitrate?: number; startBitrate?: "default" | "target"; minBitrate?: number; }; audioBitrate?: number; camera?: { video?: boolean | ZegoCaptureCamera; audio?: boolean | ZegoCaptureMicrophone; }; screen?: { video?: boolean | ZegoCaptureScreenVideo; audio?: boolean | ZegoCaptureScreenAudio; }; custom?: { video?: ZegoCustomVideo; audio?: ZegoCustomAudio; }; } export interface ZegoCaptureMicrophone { input?: string; channelCount?: 1 | 2; ANS?: boolean; AGC?: boolean; AEC?: boolean; } export interface ZegoCaptureCamera { input?: string; quality?: 1 | 2 | 3 | 4; facingMode?: "user" | "environment"; width?: number | ConstraintExtend; height?: number | ConstraintExtend; frameRate?: number | ConstraintExtend; optimizationMode?: "default" | "motion" | "detail"; keyFrameInterval?: number; } export interface ZegoCaptureScreenVideo { quality?: 1 | 2 | 3 | 4; width?: number | ConstraintExtend; height?: number | ConstraintExtend; frameRate?: number | ConstraintExtend; optimizationMode?: "default" | "motion" | "detail"; /** * 指定屏幕共享画面 ID , 仅限chrome 内核浏览器使用 */ sourceID?: string; keyFrameInterval?: number; captureElement?: HTMLElement; } export interface ZegoCaptureScreenAudio { ANS?: boolean; AGC?: boolean; AEC?: boolean; } export interface ZegoCustomAudio { /** * 第三方源,<video>媒体对象或MediaStream */ source: HTMLMediaElement | MediaStream; channelCount?: 1 | 2; } export interface ZegoCustomVideo { /** * 第三方源,<video>媒体对象或MediaStream */ source: HTMLMediaElement | MediaStream; optimizationMode?: "default" | "motion" | "detail"; keyFrameInterval?: number; } export interface PublishStreamConstraints { width?: number | ConstraintExtend; height?: number | ConstraintExtend; frameRate?: number | ConstraintExtend; minBitrate?: number; maxBitrate?: number; ANS?: boolean; AGC?: boolean; AEC?: boolean; video?: boolean; audio?: boolean; } export interface ScreenConfig { video?: { width?: number | ConstraintExtend; height?: number | ConstraintExtend; frameRate?: number | ConstraintExtend; }; captureElement?: HTMLElement; bitRate?: number; audio?: boolean; startBitrate?: "default" | "target"; minBitrate?: number; keyFrameInterval?: number; unlimitedCaptureResolution?: boolean; sourceID?: string; videoOptimizationMode?: "default" | "motion" | "detail"; ANS?: boolean; AGC?: boolean; AEC?: boolean; channelCount?: number; } export interface ZegoPreviewConfig { audio?: boolean; audioInput?: string; video?: boolean; facingMode?: "user" | "environment"; videoInput?: string; input?: string; videoQuality?: QUALITYLEVEL; quality?: QUALITYLEVEL; externalCapture?: boolean; height?: number | ConstraintExtend; frameRate?: number | ConstraintExtend; width?: number | ConstraintExtend; bitRate?: number; bitrate?: number; audioBitrate?: number; externalMediaStream?: MediaStream; ANS?: boolean; AGC?: boolean; AEC?: boolean; mediaSource?: "screen" | "application" | "window"; screen?: boolean; source?: HTMLElement | MediaStream; channelCount?: 1 | 2; startBitrate?: "default" | "target"; minBitrate?: number; sourceID?: string; videoOptimizationMode?: "default" | "motion" | "detail"; optimizationMode?: "default" | "motion" | "detail"; keyFrameInterval?: number; captureElement?: HTMLElement; } export interface CompositingStreamConfig { width?: number; height?: number; frameRate?: number; bitrate?: number; } export interface DeviceInfo { label: string; deviceID: string; } export interface Device { deviceName: string; deviceID: string; } export declare const ENUM_SIGNAL_SUB_CMD: { none: number; joinLiveRequest: number; joinLiveResult: number; joinLiveInvite: number; joinLiveStop: number; }; export declare const ENUM_PUSH_SIGNAL_SUB_CMD: { none: number; pushJoinLiveRequest: number; pushJoinLiveResult: number; pushJoinLiveInvite: number; pushJoinLiveStop: number; }; export interface ChatInfo { id_name: string; nick_name: string; role: number; msg_id: string; msg_category: number; msg_type: number; msg_content: string; send_time: number; } export interface UserInfo { userID: string; userName: string; } export interface MessageInfo { idName: string; nickName: string; messageId: string; category: number; type: number; content: string; time: number; } export interface WebQualityStats { video: { videoBitrate: number; videoFPS: number; videoTransferFPS?: number; frameHeight?: number; frameWidth?: number; }; audio: { audioBitrate: number; audioCodec?: string; audioJitter?: number; audioLevel?: number; audioPacketsLost?: number; audioPacketsLostRate?: number; audioQuality?: number; }; type: 1 | 0; roomId?: string; nackCount?: number; pliCount?: number; totalRoundTripTime?: number; } export interface WxQualityStats { video: { videoBitrate: number; videoFPS: number; videoHeight?: number; videoWidth?: number; }; audio: { audioBitrate: number; }; } export interface ZegoResponse { errorCode: number; extendedData: string; } export interface ZegoError { code: number; message: string; } export declare const ENUM_PUBLISH_STATE_NEGO: { stop: number; start: number; waiterAnswer: number; waitingCandidate: number; sendCandidate: number; iceConnected: number; iceDisconnected: number; iceClosed: number; iceFailed: number; }; export interface WebPublishStats { video: { videoBitrate: number; videoFPS: number; videoTransferFPS: number; frameHeight: number; frameWidth: number; googCodecName: string; muteState: "0" | "1"; videoPacketsLost: number; videoPacketsLostRate: number; }; audio: { audioBitrate: number; audioCodec: string; googCodecName: string; muteState: "0" | "1"; audioPacketsLost: number; audioPacketsLostRate: number; audioFPS: number; }; streamID: string; nackCount: number; pliCount: number; totalRoundTripTime: number; currentRoundTripTime: number; } export interface WebPlayStats { video: { videoBitrate: number; videoFPS: number; videoTransferFPS: number; videoFramesDecoded: number; videoFramesDropped: number; videoPacketsLostRate: number; videoQuality: number; frameHeight: number; frameWidth: number; googCodecName: string; muteState: "0" | "1"; videoPacketsLost: number; }; audio: { audioBitrate: number; audioCodec: string; audioJitter: number; audioLevel: number; audioPacketsLost: number; audioPacketsLostRate: number; audioQuality: number; audioSamplingRate: number; audioSendLevel: number; muteState: "0" | "1"; audioFPS: number; }; streamID: string; nackCount: number; pliCount: number; totalRoundTripTime: number; playData: number; currentRoundTripTime: number; /** * 端到端延迟,单位为 ms。 */ peerToPeerDelay: number | undefined; /** * 端到端丢包率,单位 1。(2.13.0 及以前版本单位为 %) */ peerToPeerPacketLostRate: number | undefined; } export declare enum StreamUpdateType { Delete = 0, Add = 1 } export interface WebListener { roomStreamUpdate: (roomID: string, updateType: "DELETE" | "ADD", streamList: StreamInfo[], extendedData: string) => void; streamExtraInfoUpdate: (roomID: string, streamList: { streamID: string; user: User; extraInfo: string; }[]) => void; playerStateUpdate: (result: { streamID: string; state: "PLAYING" | "NO_PLAY" | "PLAY_REQUESTING"; errorCode: number; extendedData: string; }) => void; publisherStateUpdate: (result: { streamID: string; state: "PUBLISHING" | "NO_PUBLISH" | "PUBLISH_REQUESTING"; errorCode: number; extendedData: string; }) => void; screenSharingEnded: (stream: MediaStream) => void; publishQualityUpdate: (streamID: string, publishStats: WebPublishStats) => void; playQualityUpdate: (streamID: string, playStats: WebPlayStats) => void; remoteCameraStatusUpdate: (streamID: string, status: "OPEN" | "MUTE") => void; remoteMicStatusUpdate: (streamID: string, status: "OPEN" | "MUTE") => void; soundLevelUpdate: (soundLevelList: Array<{ streamID: string; soundLevel: number; type: string; }>) => void; capturedSoundLevelUpdate: (level: number) => void; videoDeviceStateChanged: (updateType: "DELETE" | "ADD", deviceInfo: Device) => void; audioDeviceStateChanged: (updateType: "DELETE" | "ADD", deviceType: "Input" | "Output", deviceInfo: Device) => void; deviceError: (errorCode: number, deviceName: string) => void; receiveRealTimeSequentialData: (byte: ArrayBuffer, dataLength: number, streamID: string) => void; beautyEffectOverload: (stream: MediaStream) => void; /** * 收到远端流的 SEI 内容 * 拉流成功后,当远端流调用 sendSEI 后,本端会收到此回调。 * 若只拉纯音频流,将收不到推流端发送的 SEI 信息。 * @param streamID 拉流的流 ID * @param data SEI 内容 */ playerRecvSEI: (streamID: string, data: Uint8Array) => void; beautyEffectError: (stream: MediaStream, errorCode: number, extendedData: string) => void; backgroundEffectError: (stream: MediaStream, errorCode: number, extendedData: string) => void; exceptionUpdate: (stream: MediaStream, eventData: ExceptionData) => void; networkQuality: (userID: string, upstreamQuality: QualityGrade, downstreamQuality: QualityGrade) => void; mixerSoundLevelUpdate: (soundLevels: Map<number, number>) => void; autoMixerSoundLevelUpdate: (soundLevels: Map<string, number>) => void; mixerRelayCDNStateUpdate: (taskID: string, infoList: Array<ZegoStreamRelayCDNInfo>) => void; recvExperimentalAPI: (content: Record<string, any>) => void; playerVideoTrackUpdate: (streamID: string, track: MediaStreamTrack) => void; playerAudioTrackUpdate: (streamID: string, track: MediaStreamTrack) => void; publisherVideoEncoderChanged: PublisherVideoEncoderChangedCallBack; } export interface ExceptionData { code: ExceptionCode; message: string; } export declare enum ExceptionCode { captureFpsToLow = 1001, captureVolumeToLow = 1002, sendVideoBitrateToLow = 1003, sendFpsToLow = 1004, sendAudioBitrateToLow = 1005, receiveVolumeToLow = 1006, receiveAudioDecodedFail = 1007, receiveVideoDecodedFail = 1008, receiveVideoFpsDecodedToLow = 1009, renderVideoFpsToLow = 1010, captureFpsNormal = 2001, captureVolumeNormal = 2002, sendVideoBitrateNormal = 2003, sendFpsNormal = 2004, sendAudioBitrateNormal = 2005, receiveVolumeNormal = 2006, receiveAudioDecodedNormal = 2007, receiveVideoDecodedNormal = 2008, receiveVideoFpsDecodedNormal = 2009, renderVideoFpsNormal = 2010 } export interface WxListener { roomStreamUpdate: (roomID: string, updateType: "DELETE" | "ADD", streamList: StreamInfo[]) => void; streamExtraInfoUpdate: (roomID: string, streamList: { streamID: string; user: User; extraInfo: string; }[]) => void; playerStateUpdate: (result: { streamID: string; state: "PLAYING" | "NO_PLAY" | "PLAY_REQUESTING"; errorCode: number; extendedData: string; }) => void; publisherStateUpdate: (result: { streamID: string; state: "PUBLISHING" | "NO_PUBLISH" | "PUBLISH_REQUESTING"; errorCode: number; extendedData: string; }) => void; publishQualityUpdate: (streamID: string, publishStats: WxQualityStats) => void; playQualityUpdate: (streamID: string, playStats: WxQualityStats) => void; mixerRelayCDNStateUpdate: (taskID: string, infoList: Array<ZegoStreamRelayCDNInfo>) => void; } export declare enum ENUM_PLAY_SOURCE_TYPE { cdn = 0, ultra = 1 } export declare enum ENUM_BROADCASTER_STATUS { stop = 0, start = 1 } export declare enum ENUM_DISPATCH_TYPE { cdn = 0, ultra = 1, customUrl = 2 } export interface VideoNodeInputInfo { track: MediaStreamTrack | null; frameInfo?: any; } export type ZegoVideoCodec = "VP8" | "H264" | "H265" | "VP9"; export type webPublishOption = Omit<ZegoWebPublishOption, 'videoCodec'> & { videoCodec?: ZegoVideoCodec; forceSynchronousNetworkTime?: 0 | 1; cdnUrl?: string; setDeviceDelayByUser?: number; audioBitRate?: number; }; export type wxPublishOption = { sourceType?: "CDN" | "BGP"; streamParams?: string; extraInfo?: string; roomID?: string; inspectFlag?: ZegoWXInspectFlagType; }; export declare enum ENUM_SOURCE_TYPE { CDN = 0, BGP = 1 } export type webPlayOption = Omit<ZegoWebPlayOption, 'resourceMode'> & { resourceMode?: ResourceMode; videoCodec?: ZegoVideoCodec; }; export type wxPlayOption = { streamParams?: string; isMix?: boolean; }; export declare enum E_CLIENT_TYPE { ClientType_None = 0, ClientType_H5 = 1, ClientType_SmallPragram = 2, ClientType_Webrtc = 3 } export interface MediaDescriptionParams { type?: number; sdp?: string; miniSdp?: Uint8Array; keyframe_intv?: number; min_play_buf_level_ms?: number; paramsExt?: ParamsExt; } export declare class ListNode<K> { _id: number | null; _data: K | null; next: ListNode<K> | null; prev: ListNode<K> | null; constructor(id?: number | null, data?: K | null); set id(id: number | null); get id(): null | number; set data(data: K | null); get data(): K | null; hasNext(): null | number; hasPrev(): null | number; } export declare class LinkedList<T> { start: ListNode<T>; end: ListNode<T>; _idCounter: number; _numNodes: number; constructor(); /** * Inserts a node before another node in the linked list * @param {Node} toInsertBefore * @param {Node} node */ insertBefore(toInsertBefore: ListNode<T>, data: T): ListNode<T>; /** * Adds data wrapped in a Node object to the end of the linked list * @param {object} data */ addLast(data: T): ListNode<T>; /** * Alias for addLast * @param {object} data */ add(data: T): ListNode<T>; /** * Gets and returns the first node in the linked list or null * @return {Node/null} */ getFirst(): ListNode<T> | null; /** * Gets and returns the last node in the linked list or null * @return {Node/null} */ getLast(): ListNode<T> | null; /** * Gets and returns the size of the linked list * @return {number} */ size(): number; /** * (Internal) Gets and returns the node at the specified index starting from the first in the linked list * Use getAt instead of this function * @param {number} index */ getFromFirst(index: number): null | ListNode<T>; /** * Gets and returns the Node at the specified index in the linked list * @param {number} index */ get(index: number): ListNode<T> | null; /** * Removes and returns node from the linked list by rearranging pointers * @param {Node} node * @return {Node} */ remove(node: ListNode<T>): ListNode<T>; /** * Removes and returns the first node in the linked list if it exists, otherwise returns null * @return {Node/null} */ removeFirst(): ListNode<T> | null; /** * Removes and returns the last node in the linked list if it exists, otherwise returns null * @return {Node/null} */ removeLast(): ListNode<T> | null; /** * Removes all nodes from the list */ removeAll(): void; /** * Iterates the list calling the given fn for each node * @param {function} fn */ each(iterator: Function): void; find(iterator: Function): ListNode<T> | null; map(iterator: Function): ListNode<T>[]; /** * Alias for addLast * @param {object} data */ push(data: T): ListNode<T>; /** * Performs insertBefore on the first node * @param {object} data */ unshift(data: T): void; /** * Alias for removeLast */ pop(): ListNode<T> | null; /** * Alias for removeFirst() */ shift(): ListNode<T> | null; } export interface ZegoMediaDevices extends MediaDevices { getDisplayMedia(constraints: any): Promise<MediaStream>; } export interface ZegoAudioContext extends AudioContext { createMediaStreamDestination(): MediaStreamAudioDestinationNode; } export interface ZegoHTMLAudioElement extends HTMLAudioElement { captureStream(): MediaStream; } interface ZegoMediaRecorderErrorEventInit extends EventInit { error: DOMException; } interface ZegoMediaRecorderErrorEvent extends Event { new (type: string, eventInitDict: ZegoMediaRecorderErrorEventInit): this; readonly error: DOMException; } interface ZegoBlobEventInit extends EventInit { data: Blob; timecode?: number; } export interface ZegoBlobEvent extends Event { readonly data: Blob; readonly timecode: number; new (type: string, eventInitDict: ZegoBlobEventInit): this; } export interface ZegoMediaRecorderOptions { mimeType?: string; audioBitsPerSecond?: number; videoBitsPerSecond?: number; bitsPerSecond?: number; } export interface ZegoRoomInfo { roomID: string; streamHandler: StreamHandler; token: string; sessionID: string; roomSessionID: string; isResetRoom: boolean; streamList: Array<any>; streamInfoList: any; dataChannelManager?: any; } export interface PusherAttributes { id?: string; url?: string; mode?: "SD" | "HD" | "FHD" | "RTC"; enableCamera?: boolean; enableMic?: boolean; enableAgc?: boolean; enableAns?: boolean; minBitrate?: number; maxBitrate?: number; frontCamera?: "front" | "back"; enableZoom?: boolean; videoWidth?: number; videoHeight?: number; beautyLevel?: number; beautyStyle?: "smooth" | "nature"; whitenessLevel?: number; videoOrientation?: "vertical" | "horizontal"; enableRemoteMirror?: boolean; localMirror?: "auto" | "enable" | "disable"; audioQuality?: "low" | "high"; audioVolumeType?: "media" | "voicecall"; audioReverbType?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7; filter?: "standard" | "pink" | "nostalgia" | "blues" | "romantic" | "cool" | "fresher" | "solor" | "aestheticism" | "whitening" | "cerisered"; } export interface PlayerAttributes { id?: string; url?: string; mode?: "RTC" | "live"; autoPlay?: boolean; muteAudio?: boolean; muteVideo?: boolean; orientation?: "vertical" | "horizontal"; objectFit?: "contain" | "fillCrop"; minCache?: number; maxCache?: number; soundMode?: "speaker" | "ear"; enableRecvMessage?: boolean; autoPauseIfNavigate?: boolean; autoPauseIfOpenNative?: boolean; } export interface StateInfo { state: string; code: number; } export type ZegoRecordingState = "inactive" | "recording" | "paused"; export type ZegoCheckSingleType = "webRTC" | "customCapture" | "camera" | "microphone" | "screenSharing" | "H264" | "VP8"; export declare class MediaRecorder extends EventTarget { readonly stream: MediaStream; readonly mimeType: string; readonly state: ZegoRecordingState; readonly videoBitsPerSecond: number; readonly audioBitsPerSecond: number; ondataavailable: (event: ZegoBlobEvent) => void; onerror: (event: ZegoMediaRecorderErrorEvent) => void; onpause: EventListener; onresume: EventListener; onstart: EventListener; onstop: EventListener; start(timeslice?: number): void; stop(): void; resume(): void; pause(): void; requestData(): void; static isTypeSupported(type: string): boolean; constructor(stream: MediaStream, options?: ZegoMediaRecorderOptions); } export declare const ENUM_PUBLISH_STATE_UPDATE: { start: number; error: number; retry: number; }; export declare const ENUM_PLAY_STATE_UPDATE: { start: number; error: number; retry: number; stop: number; }; export declare const ENUM_RETRY_STATE: { didNotStart: number; retrying: number; finished: number; }; export declare const REPORT_ACTION: { eventStart: string; eventEndWithMsgInfo: string; addEventMsg: string; addEvent: string; eventEnd: string; addMsgInfo: string; }; export declare enum QualityGrade { Unknown = -1, Excellent = 0, Good = 1, Middle = 2, Poor = 3, Die = 4 } export declare enum QUALITY_CONSTANT { MinQuality = 0, DieQuality = 0, PoorMinQuality = 1, MiddleMinQuality = 30, GoodMinQuality = 60, ExcellentMinQuality = 85, MaxQuality = 100 } export declare enum ZegoSEIType { /** * 采用 SEI (nalu type = 6,payload type = 243) 类型打包,此类型是 SEI 标准未规定的类型,跟视频编码器或者视频文件中的 SEI 不存在冲突性,用户不需要根据 SEI 的内容做过滤。 * SDK 默认发送 SEI 采用此种类型 */ ZegoDefined = 0, /** * 采用 SEI (nalu type = 6,payload type = 5) 类型打包,H.264 标准对于此类型有规定的格式:startcode + nalu type(6) + payload type(5) + len + pay load(uuid + context)+ trailing bits; * 因为视频编码器自身会产生 payload type 5 SEI,或者使用视频文件推流时,视频文件中也可能存在这样的 SEI,所以使用此类型时,用户把 uuid + context 当作一段 buffer 塞给次媒体的发送接口; * 此时为了区别视频编码器自身产生的 SEI, App 在发送此类型 SEI 时,可以填写业务特定的uuid(uuid长度为16字节),接收方使用SDK 解析payload type为 5的SEI时,会根据设置的过滤字符串过滤出 uuid相符的 SEI 抛给业务,如果没有设置过滤字符串,SDK会把所有收到的SEI都抛给业务方; * uuid过滤字符串设置接口,setSEIConfig设置的uuid过滤字符串。 */ UserUnregister = 1 } export declare enum PlayMode { CDN = "cdn", L3 = "l3", RTC = "rtc" } export declare enum ResourceMode { RTC = 0, CDN = 1, L3 = 2, DG = 3, CUSTOM = 5 } export declare enum Segmentation { PortraitSegmentation = 0 } export interface SEIConfig { unregisterSEIFilter?: string; SEIPass?: boolean; emulationPreventionByte?: boolean; } export interface AutoSwitchDeviceConfig { camera?: boolean; microphone?: boolean; } export declare enum ZegoScenario { Default = 3, StandardVideoCall = 4, HighVideoCall = 5, StandardChatroom = 6, HighQualityChatroom = 7, Broadcast = 8, UNKNOWN = 100 } export interface Geo { type: ZegoGeoFenceType; areaList: number[]; } export declare enum H264ProfileType { BASE_LINE = 1, MAIN = 2, HIGH = 3 } export declare enum EncodecSelectionModeType { ONLY_BASELINE = "only_baseline", HARD_SOFT_ENCODEC_FIRST = "hard_or_soft_encodec_first", HIGH_PROFILE_FIRST = "high_profile_first" } export declare enum SoundLevelApiType { useAnalyzer = 0, useWorklet = 1 } declare enum ChoirRole { None = 0, Vocalist = 1, BackingSinging = 2 } export interface MiniStreamDispatchRequest { streamID: string; actionType: "push" | "pull"; } export interface DataChannelOption { ordered?: boolean; maxPacketLifeTime?: number; maxRetransmits?: number; } export interface EngineConfig { encodecSelectionMode?: EncodecSelectionModeType; keepAudioTrack: boolean; playClearLastFrame: boolean; previewClearLastFrame: boolean; mixingAudioDelay: number; adaptCustomUA: boolean; allowReplaceEmptyTrack: boolean; publishQualityInterval: number; playQualityInterval: number; baseMixingAudioDelay: number; setDeviceDelayByUser?: number; blankVideoTrackFrameInterval?: number; choirRole?: ChoirRole; notProxyRTC?: boolean; disableCanvasIOS15_1?: boolean; setUserInfo?: { userID?: string; userName?: string; token?: string; }; enableMiniSDP?: boolean; keepRtcWhenSignalDisconnected?: boolean; autoRecaptureOnShow?: boolean; datachannelOption: DataChannelOption; maxChannels?: number; roomRetryTime?: number; streamRetryTime?: number; connectMediaServerInAdvance: boolean; switchRoomNotStopPlay?: boolean; enableReferenceBitrate: boolean; speechEnhanceLogLevel?: number; disableAINSRollback?: boolean; } export declare enum NetAgentMethod { METHOD_UNSET = 0, METHOD_GET = 1, METHOD_POST = 2, METHOD_PUT = 3, METHOD_PATCH = 4, METHOD_DELETE = 5, METHOD_HEAD = 6, METHOD_OPTIONS = 7 } export declare const enum ZegoRemoteDeviceState { Open = 0, GenericError = 1, InvalidID = 2, NoAuthorization = 3, ZeroFPS = 4, InUseByOther = 5, Unplugged = 6, RebootRequired = 7, SystemMediaServicesLost = 8, Disable = 9, Mute = 10, Interruption = 11, InBackground = 12, MultiForegroundApp = 13, BySystemPressure = 14, NotSupport = 15 } export declare const enum HandleType { Add = 0, Remove = 1 } export declare enum NetAgentBusinessService { SERVICE_UNSET = 0, SERVICE_MEDIAGW = 1, SERVICE_LIVEROOM = 2, SERVICE_MIX = 3, SERVICE_ZEUS = 4, SERVICE_ZPUSH = 5, SERVICE_L3 = 6, SERVICE_TALKLINE = 7, SERVICE_EDUSUITE = 8, SERVICE_ZIM = 9, SERVICE_ClOUD_SETTING = 10, SERVICE_ZEUSHB = 11, SERVICE_USER_LOGIC = 12, SERVICE_UNIFYDISPATCH = 13, SERVICE_QUALITY = 14, SERVICE_SECURITY = 15, SERVICE_KTVCPR = 16, SERVICE_SWITCH4LIVEROOM = 17, SERVICE_WEBRTC_SIGNAL = 18, SERVICE_L3_WEBRTC_SIGNAL = 19, SERVICE_VIDEOCPR = 20, SERVICE_CDN = 21, SERVICE_CLOUDRECORD = 22, SERVICE_INNER_ECHO = 23, SERVICE_OUTER_ECHO = 24, SERVICE_LOCALHOST_ECHO = 25, SERVICE_ECHO = 26, SERVICE_DOCSERVICE = 27, SERVICE_AUTHSVR = 28 } export interface NetAgentHttpReq { service: NetAgentBusinessService; headers?: { name: string; val: string; }[]; body: any; idName: string; ack?: boolean; stick?: string; location: string; method_no: NetAgentMethod; disableLog?: boolean; } export interface NetAgentHttpResp { body: any; headers: Array<{ name: string; val: string; }>; status_code: number; txid: number; } export interface ZegoReportSpan { setAttributes(attributes: Record<string, any>): void; setAttribute(key: string, value: any): void; end(immediately?: boolean): void; } export declare enum ZegoNetmode { Default = 0, Extranet = 1, Intranet = 2 } export declare const getSeq: Function; export declare const getReportSeq: Function; export declare enum OSType { WIN32 = "WIN32", MAC = "Mac", ANDROID = "Android", LINUX = "Linux", IOS = "iOS", Harmony = "Harmony", UNKNOWN = "WTF" } export type ZegoActivateSEIOption = { stream: MediaStream; action: 0 | 1; infoType?: number; }; export declare const ROOM_CHANNEL_MESSAGE_EXPERIMENTALAPI = 0; export type MessageItem = { seq: number; deleted: boolean; sendTime: number; timeout: number; success: Function | undefined | null; error: Function | undefined | null; params?: Record<string, any>; cmd?: string; }; export type { HttpReq, ConnectedType, BrokenType, Mode, DisconnectedType, BusinessService } from "../plugin/zegoConnection"; export { TRACER_LEVEL } from "../rtm/zego.entity"; export type { ZReporter } from "../rtm/zego.reporter"; export type { ZegoLogger, ZegoDataReport } from "zego-express-logger"; /** * 根据当前环境返回定时器的类型 * - Node.js环境返回 NodeJS.Timeout * - Browser环境返回 number */ export type Timer = ReturnType<typeof globalThis.setTimeout> | null;