import EventEmitter from 'eventemitter3'; interface RTCChannelInfo { /** * 频道ID,可用于服务端API调用。 */ cid: number; /** * 用户输入的频道名。 */ channelName: string; /** * 用户输入的id。当用户输入的uid为0时,则可获取服务端随机分配的uid。 */ uid: number | string; /** * 用户输入的token。 */ token: string; } interface WXStream { url: string; uid: string | number; } interface VideoMuteOrUnmuteEvent { mute: boolean; uid: string | number; } interface RTCControllerEvents { streamSubscribed: [stream: WXStream]; clientLeave: [uid: string | number]; clientJoin: [uid: string | number]; videoMuteOrUnmute: [event: VideoMuteOrUnmuteEvent]; error: [errorName: string]; /** 直播间关闭(对应小程序 SDK liveRoomClose 事件) */ channelClosed: []; /** 用户被踢出频道(对应小程序 SDK kicked 事件) */ clientBanned: []; } type JoinOptions = { channelName: string; token?: string; uid?: number | string; customData?: string; rtmpRecord?: number; recordAudio?: number; recordVideo?: number; recordType?: string; liveEnable?: number; }; export type RTCConfig = { getToken?: (opt: JoinOptions) => Promise; joinOptions?: JoinOptions; }; declare class RTCController extends EventEmitter { client: any; localStreamUrl?: string; remoteStreams: WXStream[]; private _rtcConfig; private _rtcSDK; private _inTheRoom; private _remoteVideoSubscriptionEnabled; private _remoteMediaStates; constructor({ appkey, rtcConfig, debug, remoteVideoSubscriptionEnabled, }: { appkey: string; debug?: boolean; rtcConfig?: RTCConfig; remoteVideoSubscriptionEnabled?: boolean; }); getChannelInfo(): RTCChannelInfo; joinRTCChannel(options: JoinOptions): Promise; publishLocalStream(mediaType?: 'video' | 'audio'): Promise; muteLocalVideo(mute: boolean): Promise; muteLocalAudio(mute: boolean): Promise; leaveRTCChannel(): Promise; resetState(): void; destroy(): void; setRemoteVideoSubscriptionEnabled(enabled: boolean): Promise; /** * 新增流,如果以存在,则更新流 * @param stream */ private _addStream; private _shouldSubscribeMediaType; private _markRemoteMediaType; private _removeRemoteMediaType; private _subscribeStream; private _refreshRemoteVideoSubscriptions; private _addRtcEventListener; } export default RTCController;