urtc-sdk
Version:
UCloud WebRTC javascript SDK
650 lines (640 loc) • 23.3 kB
TypeScript
// Generated by dts-bundle v0.7.3
declare module 'urtc-sdk' {
import Logger from '__urtc-sdk/logger';
import Client from '__urtc-sdk/client';
import { setServers } from '__urtc-sdk/server';
import { getSupportProfileNames } from '__urtc-sdk/resolutions';
import { version } from '__urtc-sdk/version';
import { genToken } from '__urtc-sdk/token';
import { Codecs, DeviceDetectionOptions, DeviceDetectionResult, GetDevicesOptions } from '__urtc-sdk/types';
export * from '__urtc-sdk/types';
function getDevices(opts: GetDevicesOptions, onSuccess: (data: MediaDeviceInfo[]) => any, onFailure: (data?: any) => any): void;
const generateToken: typeof genToken;
function getSupportedCodec(callback?: (data: Codecs) => any): void;
function isSupportWebRTC(): boolean;
function deviceDetection(options: DeviceDetectionOptions, callback: (result: DeviceDetectionResult) => any): void;
export { Client };
export { Logger };
export { setServers };
export { getDevices };
export { getSupportProfileNames };
export { version };
export { generateToken };
export { getSupportedCodec };
export { isSupportWebRTC };
export { deviceDetection };
const UCloudRTC: {
Client: typeof Client;
setServers: typeof setServers;
getDevices: typeof getDevices;
getSupportProfileNames: typeof getSupportProfileNames;
version: string;
generateToken: typeof genToken;
getSupportedCodec: typeof getSupportedCodec;
isSupportWebRTC: typeof isSupportWebRTC;
deviceDetection: typeof deviceDetection;
};
export default UCloudRTC;
}
declare module '__urtc-sdk/logger' {
export enum ENUM_LOG_LEVEL {
debug = 0,
info = 1,
warn = 2,
error = 3
}
export class Logger {
constructor(level?: ENUM_LOG_LEVEL);
setLogLevel(level: string): void;
debug(...args: any[]): void;
info(...args: any[]): void;
warn(...args: any[]): void;
error(...args: any[]): void;
report(...args: any[]): void;
onLog({}: {}): void;
onWarn({}: {}): void;
onError({}: {}): void;
set onReport(cb: ((...args: any[]) => void) | undefined);
}
const _default: Logger;
export default _default;
}
declare module '__urtc-sdk/client' {
import { UserRole, User, Stream, AudioStats, VideoStats, NetworkStats, LeaveRoomOptions, ClientOptions, DeviceOptions, DeviceDetectionOptions, DeviceDetectionResult, PublishOptions, AudioVolumeOptions, EventType, RecordOptions, Record, SwitchDeviceOptions, SwitchImageOptions, EffectOptions, EffectVolumeOptions, SnapshotOptions, ReplaceTrackOptions, MixOptions, StopMixOptions, MixResult, AddMixStreamsOptions, RemoveMixStreamsOptions, StartRecordOptions, RecordResult, UpdateMixStreamsOptions, StartRelayOptions, RelayResult, UpdateRelayPushURLOptions, UpdateRelayLayoutOptions, PlayOptions, VideoProfileOptions, CustomVideoProfile, GetDevicesOptions, CreateStreamOptions } from '__urtc-sdk/types';
export default class Client {
constructor(appId: string, token: string, options?: ClientOptions);
setRole(role: UserRole): boolean;
joinRoom(roomId: string, userId: string, onSuccess?: (users: Array<User>, streams: Array<Stream>) => void, onFailure?: (data?: any) => void): void;
leaveRoom(options?: LeaveRoomOptions, onSuccess?: () => void, onFailure?: (data?: any) => void): void;
publish(options?: PublishOptions, onFailure?: (err: Error) => void): void;
unpublish(streamId?: string, onSuccess?: (stream: Stream) => void, onFailure?: (err: Error) => void): void;
subscribe(streamId: string, onFailure?: (Error?: any) => void): void;
unsubscribe(streamId: string, onSuccess?: (stream: Stream) => void, onFailure?: (err: Error) => void): void;
on(event: EventType, listener: (data?: any) => void): void;
off(event: EventType, listener: (data?: any) => void): void;
muteAudio(streamId?: string): boolean;
unmuteAudio(streamId?: string): boolean;
muteVideo(streamId?: string): boolean;
unmuteVideo(streamId?: string): boolean;
startRecording(options: RecordOptions, onSuccess?: (data: Record) => void, onFailure?: (data?: any) => void): void;
stopRecording(onSuccess?: () => void, onFailure?: (data?: any) => void): void;
getUser(): User | undefined;
getUsers(): User[];
sync(cb: (err?: Error) => void): void;
getStream(streamId?: string): Stream | undefined;
getLocalStreams(): Stream[];
getRemoteStreams(): Stream[];
getStreams(): Stream[];
getMediaStream(streamId?: string): MediaStream | undefined;
getLocalMediaStream(streamId?: string): MediaStream | undefined;
getRemoteMediaStream(streamId: string): MediaStream | undefined;
play(options: PlayOptions, callback: (err?: Error) => void): void;
resume(streamId: string, callback: (err?: Error) => void): void;
pause(streamId: string, callback: (err?: Error) => void): void;
stop(streamId: string, callback: (err?: Error) => void): void;
getMicrophones(opts?: GetDevicesOptions, onSuccess?: (data: MediaDeviceInfo[]) => void, onFailure?: (data?: any) => void): void;
getCameras(opts?: GetDevicesOptions, onSuccess?: (data: MediaDeviceInfo[]) => void, onFailure?: (data?: any) => void): void;
getLoudspeakers(onSuccess?: (data: MediaDeviceInfo[]) => void, onFailure?: (data?: any) => void): void;
setVideoProfile(options: string | CustomVideoProfile | VideoProfileOptions, onSuccess?: () => void, onFailure?: (data?: any) => void): void;
switchDevice(options: SwitchDeviceOptions, onSuccess?: (data?: any) => void, onFailure?: (data?: any) => void): void;
switchScreen(streamId?: string, onSuccess?: (data?: any) => void, onFailure?: (data?: any) => void): void;
switchImage(options: SwitchImageOptions, onSuccess?: (data?: any) => void, onFailure?: (data?: any) => void): void;
getAudioVolume(streamId?: string): number;
setAudioVolume(options: AudioVolumeOptions, callback?: (data?: any) => void): void;
getAudioStats(streamId?: string, onSuccess?: (data: AudioStats) => void, onFailure?: (data?: any) => void): void;
getVideoStats(streamId?: string, onSuccess?: (data: VideoStats) => void, onFailure?: (data?: any) => void): void;
getNetworkStats(streamId?: string, onSuccess?: (data: NetworkStats) => void, onFailure?: (data?: any) => void): void;
preloadEffect(effectId: number, filePath: string, callback?: (err?: Error) => void): void;
unloadEffect(effectId: number): void;
playEffect(options: EffectOptions, callback?: (err?: Error) => void): void;
pauseEffect(options: EffectOptions, callback?: (data?: any) => void): void;
resumeEffect(options: EffectOptions, callback?: (data?: any) => void): void;
stopEffect(options: EffectOptions, callback?: (data?: any) => void): void;
setEffectVolume(options: EffectVolumeOptions, callback?: (data?: any) => void): void;
snapshot(options?: SnapshotOptions, onSuccess?: (data: string) => void, onFailure?: (data?: any) => void): void;
startPreviewing(options?: DeviceOptions, onSuccess?: (stream: MediaStream) => void, onFailure?: (data?: any) => void): void;
stopPreviewing(): void;
deviceDetection(options: DeviceDetectionOptions, callback: (result: DeviceDetectionResult) => void): void;
replaceTrack(options: ReplaceTrackOptions, callback?: (err?: any, track?: MediaStreamTrack) => void): void;
startMix(options: MixOptions, callback?: (err?: Error, data?: MixResult) => void): void;
stopMix(options: StopMixOptions, callback?: (err?: Error, data?: MixResult) => void): void;
queryMix(callback?: (err?: Error, data?: MixResult) => void): void;
addMixStreams(options: AddMixStreamsOptions, callback?: (err?: Error, data?: MixResult) => void): void;
removeMixStreams(options: RemoveMixStreamsOptions, callback?: (err?: Error, data?: MixResult) => void): void;
startRecord(options: StartRecordOptions, callback?: (err?: Error, data?: RecordResult) => void): void;
stopRecord(callback?: (err?: Error, data?: RecordResult) => void): void;
updateRecordStreams(options: UpdateMixStreamsOptions, callback?: (err?: Error, data?: RecordResult) => void): void;
startRelay(options: StartRelayOptions, callback?: (err?: Error, data?: RelayResult) => void): void;
stopRelay(callback?: (err?: Error, data?: RelayResult) => void): void;
updateRelayStreams(options: UpdateMixStreamsOptions, callback?: (err?: Error, data?: RelayResult) => void): void;
updateRelayPushURL(options: UpdateRelayPushURLOptions, callback?: (err?: Error, data?: RelayResult) => void): void;
updateRelayLayout(options: UpdateRelayLayoutOptions, callback?: (err?: Error, data?: RelayResult) => void): void;
createStream(options: CreateStreamOptions, callback: (err?: Error, stream?: Stream) => void): void;
publishStream(streamId: string, callback: (err?: Error, stream?: Stream) => void): void;
unpublishStream(streamId: string, callback: (err?: Error, stream?: Stream) => void): void;
removeStream(streamId: string, callback: (err?: Error) => void): void;
destroyStream(streamId: string, callback: (err?: Error) => void): void;
enableAudioVolumeIndicator(interval?: number): void;
logoff(action: 'quit' | 'reconnect' | 'switch' | 'refresh', users: string[], callback: (err?: Error) => void): void;
}
}
declare module '__urtc-sdk/server' {
export interface ServerConfig {
api: string;
log: string;
signal: string;
}
export const SERVER_CONFIG: ServerConfig;
export function setServers(conf: ServerConfig): void;
}
declare module '__urtc-sdk/resolutions' {
import { CustomVideoProfile } from '__urtc-sdk/types';
export const SUPPORT_RESOLUTIONS: {
'240*180': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'320*180': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'320*240': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'480*360': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'640*360': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'640*480': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'640*480_1': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'1280*720': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'1280*720_1': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'1280*720_2': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'1280*720_3': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'1920*1080': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'1920*1080_1': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'1920*1080_2': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
'1920*1080_3': {
width: number;
height: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
};
};
export const INTERNAL_SUPPORT_RESOLUTIONS: {};
export const DEFAULT_PROFILE = "640*480";
export function getSupportProfileNames(): Array<string>;
export function getInternalSupportProfileNames(): Array<string>;
export interface ResolutionAttributes {
videoWidth: number;
videoHeight: number;
minFrameRate: number;
maxFrameRate: number;
minVideoBW: number;
maxVideoBW: number;
}
export interface Resolution {
profileName: string;
video: MediaTrackConstraints;
attributes: ResolutionAttributes;
}
export function getResolution(profile: string): Resolution;
export function getCustomResolution(profile: CustomVideoProfile): Resolution;
}
declare module '__urtc-sdk/version' {
export const version = "1.9.7";
}
declare module '__urtc-sdk/token' {
export function genToken(appId: string, appKey: string, roomId: string, userId: string): string;
export function decode(token: string): any;
export function encode(data: any): string;
const service: {
genToken: typeof genToken;
decode: typeof decode;
encode: typeof encode;
};
export default service;
}
declare module '__urtc-sdk/types' {
export type VideoCodec = 'vp8' | 'h264' | 'h265';
export type AudioCodec = 'opus';
export type RoomType = 'rtc' | 'live';
export type UserRole = 'pull' | 'push' | 'push-and-pull';
export type DeviceType = 'audio' | 'video';
export type EventType = 'user-added' | 'user-removed' | 'stream-added' | 'stream-removed' | 'stream-published' | 'stream-subscribed' | 'mute-video' | 'unmute-video' | 'mute-audio' | 'unmute-audio' | 'screenshare-stopped' | 'connection-state-change' | 'kick-off' | 'network-quality' | 'stream-reconnecting' | 'stream-reconnected' | 'record-notify' | 'relay-notify' | 'volume-indicator' | 'error-notify' | 'stream-playing' | 'stream-paused' | 'player-status-change' | 'first-key-frame' | 'audio-track-interrupted' | 'audio-track-ended';
export type ConnectionState = 'OPEN' | 'CONNECTING' | 'CLOSING' | 'RECONNECTING' | 'CLOSED';
export type WaterMarkPosition = 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom';
export type WaterMarkType = 'time' | 'image' | 'text';
export type MainViewType = 'desktop' | 'screen' | 'camera';
export type NetworkQuality = '0' | '1' | '2' | '3' | '4' | '5' | '6';
export interface ClientOptions {
type?: RoomType;
role?: UserRole;
codec?: VideoCodec;
}
export interface Codecs {
audio: Array<AudioCodec>;
video: Array<VideoCodec>;
}
export type FacingMode = 'user' | 'environment' | 'left' | 'right';
export interface PublishOptions {
audio: boolean;
video: boolean;
screenAudio?: boolean;
screen: boolean;
facingMode?: FacingMode;
microphoneId?: string;
cameraId?: string;
extensionId?: string;
mediaStream?: MediaStream;
file?: File;
filePath?: string;
}
export interface AudioProcessingOptions {
AEC?: boolean;
AGC?: boolean;
ANS?: boolean;
}
export interface CreateStreamOptions extends PublishOptions {
userId?: string;
streamId?: string;
audioProcessing?: AudioProcessingOptions;
}
export interface DeviceOptions {
audio: boolean;
video: boolean;
facingMode?: FacingMode;
microphoneId?: string;
cameraId?: string;
}
export interface DeviceDetectionOptions {
audio: boolean;
video: boolean;
microphoneId?: string;
cameraId?: string;
}
export interface DeviceDetectionResult {
audio: boolean;
audioError?: string;
video: boolean;
videoError?: string;
}
export interface User {
uid: string;
}
export interface Stream {
sid: string;
uid: string;
type: 'publish' | 'subscribe' | 'preview';
mediaType?: 'camera' | 'screen';
video: boolean;
audio: boolean;
muteAudio: boolean;
muteVideo: boolean;
mediaStream?: MediaStream;
sourceAudioMuted?: boolean;
sourceVideoMuted?: boolean;
audioMuted: boolean;
videoMuted: boolean;
previewId?: string;
}
export interface LeaveRoomOptions {
keepRecording: boolean;
}
export interface AudioVolumeOptions {
streamId?: string;
element?: HTMLMediaElement;
volume: number;
}
export interface WaterMarkOptions {
position?: WaterMarkPosition;
type?: WaterMarkType;
remarks?: string;
}
export interface MixStreamOptions {
width?: number;
height?: number;
template?: number;
isAverage?: boolean;
}
export interface RelayOptions {
time?: number;
fragment: number;
}
export interface RecordOptions {
bucket: string;
region: string;
uid?: string;
mainViewType?: MainViewType;
mixStream?: MixStreamOptions;
waterMark?: WaterMarkOptions;
relay?: RelayOptions;
}
export interface Record {
FileName: string;
RecordId: string;
}
export interface EffectOptions {
streamId?: string;
effectId: number;
filePath?: string;
loop?: boolean;
playTime?: number;
replace?: boolean;
onEnd?: () => void;
}
export interface EffectVolumeOptions {
streamId?: string;
effectId: number;
volume: number;
}
export interface SwitchDeviceOptions {
streamId?: string;
type: DeviceType;
deviceId: string;
}
export interface SwitchImageOptions {
streamId?: string;
file?: File;
filePath?: string;
}
export interface SnapshotOptions {
streamId?: string;
download?: string | boolean;
}
export interface AudioStats {
br: number;
lostpre: number;
vol: number;
mime: string;
}
export interface VideoStats {
br: number;
lostpre: number;
frt: number;
w: number;
h: number;
mime: string;
}
export interface NetworkStats {
rtt: number;
}
export interface ReplaceTrackOptions {
streamId?: string;
track: MediaStreamTrack;
retain?: boolean;
}
export type MixType = 'relay' | 'record' | 'relay-and-record' | 'update-config';
export type MixLayoutType = 'flow' | 'main' | 'custom' | 'customMain' | 'customFlow' | 'single';
export type MixAudioCodec = 'aac';
export type MixVideoCodec = 'h264' | 'h265';
export type H264Quality = 'B' | 'CB' | 'M' | 'E' | 'H';
export type MixOutputMode = 'audio-video' | 'audio';
export type MixStreamAddMode = 'automatic' | 'manual';
export interface MixLayoutOptions {
type: MixLayoutType;
standbyTypes?: MixLayoutType[];
custom?: Array<object>;
mainViewUId?: string;
mainViewType?: MainViewType;
}
export interface MixAudioOptions {
codec: MixAudioCodec;
}
export interface MixVideoOptions {
codec: MixVideoCodec;
quality?: H264Quality;
frameRate?: number;
bitRate?: number;
}
export interface BackgroundColorOptions {
r: number;
g: number;
b: number;
}
export interface MixOptions {
type?: MixType;
bucket?: string;
region?: string;
pushURL?: string[];
layout?: MixLayoutOptions;
audio?: MixAudioOptions;
video?: MixVideoOptions;
outputMode?: MixOutputMode;
width?: number;
height?: number;
backgroundColor?: BackgroundColorOptions;
waterMark?: WaterMarkOptions;
streams?: MixStream[];
streamAddMode?: MixStreamAddMode;
timeoutPeriod?: number;
keyUser?: string;
}
export interface StopMixOptions {
type?: MixType;
pushURL?: string[];
}
export interface MixResult {
MixId?: string;
FileName?: string;
Type?: MixType;
PushURL?: string[];
}
export interface MixStream {
uid: string;
mediaType: 'camera' | 'screen';
}
export interface AddMixStreamsOptions {
streams: MixStream[];
}
export interface RemoveMixStreamsOptions {
streams: MixStream[];
}
export interface StartRecordOptions {
bucket: string;
region: string;
layout?: MixLayoutOptions;
audio?: MixAudioOptions;
video?: MixVideoOptions;
width?: number;
height?: number;
backgroundColor?: BackgroundColorOptions;
waterMark?: WaterMarkOptions;
streams?: MixStream[];
outputMode?: MixOutputMode;
streamAddMode?: MixStreamAddMode;
keyUser?: string;
}
export interface RecordResult {
Id?: string;
FileName?: string;
}
export type UpdateMixStreamsType = 'add' | 'remove' | 'replace';
export interface UpdateMixStreamsOptions {
type: UpdateMixStreamsType;
streams: MixStream[];
}
export interface StartRelayOptions {
pushURL?: string[];
layout?: MixLayoutOptions;
audio?: MixAudioOptions;
video?: MixVideoOptions;
width?: number;
height?: number;
backgroundColor?: BackgroundColorOptions;
waterMark?: WaterMarkOptions;
streams?: MixStream[];
outputMode?: MixOutputMode;
streamAddMode?: MixStreamAddMode;
keyUser?: string;
}
export interface RelayResult {
Id?: string;
PushURL?: string[];
}
export type UpdateRelayPushURLType = 'add' | 'remove' | 'replace';
export interface UpdateRelayPushURLOptions {
type: UpdateRelayPushURLType;
pushURL: string[];
}
export interface UpdateRelayLayoutOptions {
layout: MixLayoutOptions;
}
export interface UpdateRelayWaterMarkOptions {
waterMark: WaterMarkOptions;
}
export type VideoFitType = 'cover' | 'contain';
export type PlayControlsOption = 'show' | 'hide' | 'auto';
export interface PlayOptions {
streamId: string;
container: HTMLElement | string;
mute?: boolean;
mirror?: boolean;
fit?: VideoFitType;
controls?: PlayControlsOption;
}
export interface CustomVideoProfile {
width: number;
height: number;
framerate: number;
bitrate: number;
}
export interface VideoProfileOptions {
streamId?: string;
previewId?: string;
profile: string | CustomVideoProfile;
}
export interface MixNotification {
code: string;
message: string;
}
export interface ErrorNotification {
code: string;
message: string;
}
export interface AudioVolume {
sid: string;
uid: string;
mediaType: 'camera' | 'screen';
volume: number;
}
export interface PlayerStatusEvent {
type: 'audio' | 'video';
status: 'playing' | 'paused';
stream: Stream;
}
export interface GetDevicesOptions {
microphone?: boolean;
camera?: boolean;
}
}