@seastart/srtc-web-sdk
Version:
srtc sdk for web
1,142 lines (1,138 loc) • 26.4 kB
TypeScript
import Bowser$1 from 'bowser';
import EventEmitter from 'events';
declare abstract class BaseSRTC {
/**
* 获取sdk编译信息
*/
abstract buildInfo(): BuildInfo;
/**
* 获取运行环境信息
* @returns
*/
abstract getEnvInfo(): any;
/**
* 频道事件通知回调
*/
onNotifyChannelEvent?: ((event: ChannelEvent) => void) | null;
/**
* 频道外im事件通知回调
*/
onNotifyImEvent?: ((event: ImEvent) => void) | null;
constructor(initParams: SdkInitParams);
/**
* 加入频道的version信息
*/
protected get joinVersion(): string;
/**
* 加入频道
* @param token 加入频道token
*/
join(token: string): Promise<BaseChannelInfo>;
/**
* 离开频道
*/
leave(): Promise<void>;
/**
* 获取频道信息
* @returns
*/
getChannelInfo(): BaseChannelInfo | null;
/**
* 获取流媒体引擎的metric快照
* @returns
*/
getStreamMetric(): Record<string, any> | undefined;
/**
* 获取某用户信息
* @returns
*/
getUserInfo(uid: string): BaseUserInfo;
/**
* 获取频道内用户信息列表
* @returns
*/
getUsersInfo(map: true): Record<string, BaseUserInfo>;
getUsersInfo(map: false): BaseUserInfo[];
/**
* 订阅远端频道混音流
* @param filterUids 过滤音频的用户id
*/
subscribeRemoteAudioMixTrack(filterUids?: string[]): Promise<BaseTrack>;
/**
* 订阅远端用户音频流
* @param uid 用户id
* @param id 流轨道id
*/
subscribeRemoteAudioTrack(uid: string, id: string): Promise<BaseTrack>;
/**
* 订阅远端视频合成流
*/
subscribeRemoteVideoMcuTrack(): Promise<BaseTrack>;
/**
* 订阅远端用户视频流
* @param uid 用户id
* @param id 流轨道id
*/
subscribeRemoteVideoTrack(uid: string, id: string): Promise<BaseTrack>;
/**
* 取消订阅远端流
*/
unsubscribeRemoteTrack(track: BaseTrack): Promise<void>;
/**
* 获取远端用户音视频流实例,一般用于订阅流后您没有持有返回的流实例,可以用此方法获取对应实例
* @param uid 用户id
* @param id 流轨道id,与desc二选一
* @param desc 流描述,与id二选一
*/
getRemoteTrack(uid: string, id?: string, desc?: string): BaseTrack;
/**
* 启用频道外消息
* @param token 启用频道外消息token
* @returns im会话sid
*/
enableIm(token: string): Promise<string>;
/**
* 关闭频道外消息
*/
disableIm(): Promise<void>;
}
declare abstract class BaseTrack extends EventEmitter {
constructor(info: BaseTrackInfo, uid: string);
/**
* 轨道id
*/
get id(): string;
/**
* 轨道类型
*/
get kind(): TrackKind;
/**
* 轨道描述
*/
get desc(): string;
/**
* 获取流轨道信息
* @returns
*/
getInfo(): BaseTrackInfo;
/**
* 轨道所属用户
* @returns
*/
getUid(): string;
toString(): string;
}
declare abstract class BaseWebrtcTrack extends BaseTrack {
constructor(info: BaseTrackInfo, uid: string);
setMediaStreamTrack(mediaStreamTrack?: MediaStreamTrack): void;
getMediaStreamTrack(): MediaStreamTrack | undefined;
}
declare class CommonChannelEventType {
/** 频道自定义props更新,对应data为ChannelInfo */
static readonly CHANNEL_UPDATE = "channel_update";
/** 首次加入频道成功,对应data为ChannelInfo */
static readonly JOIN_SUCCEED = "join_succeed";
/** 自己信息被改变,对应data为UserInfo */
static readonly ME_UPDATE = "me_update";
/** 开始断线自动重连,无data */
static readonly RECONNECTING = "reconnecting";
/** 重连成功,断线重连成功后会触发 */
static readonly RECONNECTED = "reconnected";
/** 自己被强制离开频道,对应data为DisconnectEventData */
static readonly DISCONNECTED = "disconnected";
/** 其他用户加入频道,对应data为UserInfo */
static readonly USER_JOIN = "user_join";
/** 其他用户信息改变,对应data为UserInfo */
static readonly USER_UPDATE = "user_update";
/** 其他用户离开频道,对应data为UserLeaveEventData */
static readonly USER_LEAVE = "user_leave";
/** 其他用户发布流轨道,对应data为{ user: UserInfo, track: TrackInfo } */
static readonly USER_TRACK_ADD = "user_track_add";
/** 其他用户更新流轨道,对应data为{ user: UserInfo, track: TrackInfo } */
static readonly USER_TRACK_UPDATE = "user_track_update";
/** 其他用户删除流轨道,对应data为{ user: UserInfo, track: TrackInfo } */
static readonly USER_TRACK_REMOVE = "user_track_remove";
/** 频道内自定义消息,对应data为CustomMsgData */
static readonly CUSTOM_MSG = "custom_msg";
/** 流轨道没有数据,对应data为BaseTrack */
static readonly TRACK_MUTED = "track_muted";
/** 流轨道恢复数据,对应data为BaseTrack */
static readonly TRACK_UNMUTED = "track_unmuted";
/** 流轨道停止,对应data为BaseTrack */
static readonly TRACK_ENDED = "track_ended";
}
/** 频道外事件类型 */
declare class CommonImEventType {
/** 首次连接im成功,无data */
static readonly ENABLE_SUCCEED = "enable_succeed";
/** im开始断线自动重连,无data */
static readonly RECONNECTING = "reconnecting";
/** im重连成功,断线重连成功后会触发 */
static readonly RECONNECTED = "reconnected";
/** 自己被强制断开im,对应data为ImDisconnectEventData */
static readonly DISCONNECTED = "disconnected";
/** im消息,对应data为ImMsgData */
static readonly IM_MSG = "im_msg";
}
declare class Logger {
constructor(dp?: string, dclt?: string);
setTarget(target: LogTarget): void;
setLevel(level: LogLevel): void;
debug(...args: any[]): void;
info(...args: any[]): void;
warn(...args: any[]): void;
error(...args: any[]): void;
}
declare class RemoteVideoMcuTrack extends RemoteVideoTrack {
constructor(info: BaseTrackInfo);
}
declare class SdkError {
/** 错误码 */
code: number;
/** 错误详情 */
msg: string;
/** 获取前缀错误码 */
protected prefixCode(): string;
constructor(msg: string, code?: number);
/**
* 从err转化为sdkError
* @param err 原始error
* @returns
*/
static fromError(err: Error): SdkError;
toString(): string;
toJSON(): {
code: number;
msg: string;
};
}
declare enum Codec {
/** 未知编码类型 */
Unknown = 0,
/** h264编码 */
H264 = 27,
/** h265编码 */
H265 = 36,
/** AAC编码 */
AAC = 15,
/** OPUS编码 */
OPUS = 1398100047
}
declare function dateFormat(format: string, date?: Date): string;
declare function dct(t: string): any;
declare function genNonce(len?: number): string;
declare function getHostnameFromUrl(url: string): string;
declare function isObject(value: any): boolean;
declare function isString(value: any): boolean;
declare function isWxxcx(): boolean;
declare function propAssign<T>(target: T, income: T, assigner?: Record<keyof T, (value: any, old: any) => void>): PropChangeItem<keyof T>[];
declare function retry<T>(f: () => Promise<T>, opt: {
/** 首次执行失败后的最大重试次数,默认10次,<=0代表不限制次数 */
maxRetries?: number;
/** 第一次重试间隔(ms),默认500ms,之后会以 initialDelay * 2^n 进行重试 */
initialDelay?: number;
/** 每次重试前的回调,e为上次失败catch到的错误,返回false则代表放弃重试,会返回canceled */
onRetry?: (attempt: number, e?: any) => boolean | void;
}): retryCallback<T>;
declare function sleep(ms: number): Promise<void>;
/** 频道事件通知 */
export declare class ChannelEvent {
/** 事件类型 */
type: CommonChannelEventType;
/** 事件携带的数据 */
data?: any;
constructor(type: CommonChannelEventType, data?: any);
}
/** 扩展的频道事件 */
export declare class ChannelEventType extends CommonChannelEventType {
/** 外设插入,对应data为MediaDeviceInfo */
static readonly DEVICE_ADD = "device_add";
/** 外设移除,对应data为MediaDeviceInfo */
static readonly DEVICE_REMOVE = "device_remove";
/** 轨道自动播放失败,对应data为BaseTrack */
static readonly TRACK_AUTOPLAY_FAIL = "track_autoplay_fail";
}
/** 频道外事件通知 */
export declare class ImEvent {
/** 事件类型 */
type: CommonImEventType;
/** 事件携带的数据 */
data?: any;
constructor(type: CommonImEventType, data?: any);
}
/**
* 本地音频流轨道
*/
export declare class LocalAudioTrack extends BaseWebrtcTrack {
constructor();
/**
* 获取音量
*/
getVolume(): number;
/**
* 播放音频(可指定播放设备)
*/
startPlay(opt?: AudioOutputOptions): Promise<void>;
/**
* 停止播放并释放对播放设备的占用
*/
stopPlay(): void;
}
/**
* 本地摄像头视频流轨道
*/
export declare class LocalCameraTrack extends LocalVideoTrack {
constructor(captureOptions: CameraCaptureOptions);
/**
* 开始采集
* @param opt 采集参数
*/
startCapture(opt?: CameraCaptureOptions): Promise<void>;
/**
* 停止采集
*/
stopCapture(): void;
/**
* 切换指定摄像头
* @param deviceId
* @returns
*/
changeDeviceId(deviceId: string): Promise<void>;
/**
* 切换摄像头朝向(仅手机)
* @returns
*/
switchFacingMode(): Promise<void>;
}
/**
* 本地麦克风流轨道
*/
export declare class LocalMicTrack extends LocalAudioTrack {
constructor(captureOptions: MicCaptureOptions);
/**
* 开始采集
* @param opt 采集参数
*/
startCapture(opt?: MicCaptureOptions): Promise<void>;
/**
* 停止采集
*/
stopCapture(): void;
/**
* 切换麦克风
* @param deviceId
* @returns
*/
changeDeviceId(deviceId: string): Promise<void>;
}
/**
* 屏幕共享音频流轨道
*/
export declare class LocalScreenAudioTrack extends LocalAudioTrack {
constructor(captureOptions: ScreenAudioCaptureOptions | true);
/**
* 停止采集
*/
stopCapture(): void;
}
/**
* 本地屏幕视频流轨道
*/
export declare class LocalScreenTrack extends LocalVideoTrack {
constructor(captureOptions: ScreenCaptureOptions);
/**
* 获取音频轨道
*/
getAudioTrack(): LocalScreenAudioTrack | undefined;
/**
* 开始采集
* @param opt 采集参数
*/
startCapture(opt?: ScreenCaptureOptions): Promise<void>;
/**
* 停止采集
*/
stopCapture(): void;
}
/**
* 本地视频流轨道
*/
export declare class LocalVideoTrack extends BaseWebrtcTrack {
constructor();
setMediaStreamTrack(mediaStreamTrack?: MediaStreamTrack): void;
/**
* 获取联播轨道(小流)
* @param opt 联播轨道的发布参数
* @param owidth 原始宽度
* @param oheight 原始高度
*/
getSimulcastTrack(opt: VideoPublishOptions, owidth?: number, oheight?: number): LocalVideoTrack;
/**
* 添加播放窗口
*/
addPlayView(container: HTMLElement): void;
/**
* 是否存在播放窗口
*/
hasPlayView(): boolean;
/**
* 移除播放窗口
*/
removePlayView(container: HTMLElement): void;
/**
* 移除所有播放窗口
*/
removeAllPlayViews(): void;
}
/**
* 远端混音流
*/
export declare class RemoteAudioMixTrack extends RemoteAudioTrack {
constructor(info: BaseTrackInfo, filterUids?: string[]);
/**
* 混音流中过滤的uid
* @returns
*/
getFilterUids(): string[];
}
/**
* 远端音频流轨道
*/
export declare class RemoteAudioTrack extends BaseWebrtcTrack {
constructor(info: BaseTrackInfo, uid: string);
/**
* 播放音频(可指定播放设备)
*/
startPlay(opt?: AudioOutputOptions): Promise<void>;
/**
* 停止播放并释放对播放设备的占用
*/
stopPlay(): void;
}
/**
* 远端视频流轨道
*/
export declare class RemoteVideoTrack extends BaseWebrtcTrack {
constructor(info: BaseTrackInfo, uid: string);
/**
* 添加播放窗口
*/
addPlayView(container: HTMLElement): void;
/**
* 是否存在播放窗口
*/
hasPlayView(): boolean;
/**
* 移除播放窗口
*/
removePlayView(container: HTMLElement): void;
/**
* 移除所有播放窗口
*/
removeAllPlayViews(): void;
}
export declare class SRTC extends BaseSRTC {
buildInfo(): BuildInfo;
/**
* 获取web运行环境信息,如是否支持webrtc等
* @returns
*/
getEnvInfo(): EnvWebInfo;
constructor(initParams: SdkInitParams);
/**
* 获取设备列表
* @param kind
* @param requestPermissions
* @returns
*/
getDevices(kind?: MediaDeviceKind, requestPermissions?: boolean): Promise<MediaDeviceInfo[]>;
/**
* 创建麦克风本地音频流
* @param preset 麦克风预设,默认为 MicPresets.music
*/
createLocalMicTrack(preset?: MicPreset): LocalMicTrack;
/**
* 创建自定义本地音频流
*/
createLocalCustomAudioTrack(msTrack: MediaStreamTrack): LocalAudioTrack;
/**
* 创建摄像头本地视频流
* @param preset 摄像头预设,默认为 CameraPresets["720p"]
*/
createLocalCameraTrack(preset?: CameraPreset): LocalCameraTrack;
/**
* 创建屏幕共享本地视频流
* @param preset 屏幕共享预设,默认为 ScreenPresets["1080p"]
* @param audioPreset 屏幕共享音频预设,默认为 ScreenAudioPresets["default"]
*/
createLocalScreenTrack(preset?: ScreenPreset, audioPreset?: ScreenAudioPreset): LocalScreenTrack;
/**
* 创建自定义本地视频流
*/
createLocalCustomVideoTrack(msTrack: MediaStreamTrack): LocalVideoTrack;
/**
* 临时enable本地流轨道,如取消静音麦克风
*/
enableLocalTrack(track: LocalAudioTrack | LocalVideoTrack): void;
/**
* 临时disable本地流轨道,如临时静音麦克风
* 比unpublishLocalTrack取消发布轨道轻
*/
disableLocalTrack(track: LocalAudioTrack | LocalVideoTrack): void;
/**
* 发布本地流轨道
* @param track
* @returns
*/
publishLocalTrack(track: LocalAudioTrack | LocalVideoTrack, opt?: Partial<AudioPublishOptions> | Partial<VideoPublishOptions>): Promise<void>;
/**
* 取消发布本地流
* @param track
*/
unpublishLocalTrack(track: LocalAudioTrack | LocalVideoTrack): Promise<void>;
/**
* 订阅远端频道混音流
*/
subscribeRemoteAudioMixTrack(filterUids?: string[]): Promise<RemoteAudioMixTrack>;
/**
* 订阅远端用户音频流
* @param uid 用户id
* @param id 流轨道id
*/
subscribeRemoteAudioTrack(uid: string, id: string): Promise<RemoteAudioTrack>;
/**
* 订阅远端视频合成流
*/
subscribeRemoteVideoMcuTrack(): Promise<RemoteVideoMcuTrack>;
/**
* 订阅远端用户视频流
* @param uid 用户id
* @param id 流轨道id
*/
subscribeRemoteVideoTrack(uid: string, id: string): Promise<RemoteVideoTrack>;
/**
* 取消订阅远端流
*/
unsubscribeRemoteTrack(track: RemoteAudioMixTrack | RemoteAudioTrack | RemoteVideoTrack): Promise<void>;
getRemoteTrack(uid: string, id?: string, desc?: string): RemoteAudioTrack | RemoteVideoTrack;
}
/**
* 摄像头预设参数
*/
export declare const CameraPresets: {
/** 分辨率1920*1080,帧率15,码率2.5Mbps */
"1080p": CameraPreset;
/** 分辨率1280*720,帧率15,码率1.2Mbps,createLocalCameraTrack的默认预设参数 */
"720p": CameraPreset;
/** 分辨率640*360,帧率15,码率550Kbps */
"360p": CameraPreset;
/** 分辨率320*180,帧率15,码率250Kbps */
"180p": CameraPreset;
};
/**
* 麦克风预设参数
*/
export declare const MicPresets: {
/** 单声道,采样率48kHz,码率24Kbps */
speech: MicPreset;
/** 单声道,采样率48kHz,码率32Kbps,createLocalMicTrack的默认预设参数 */
music: MicPreset;
/** 双声道,采样率48kHz,码率48Kbps */
musicStereo: MicPreset;
/** 单声道,采样率48kHz,码率64Kbps */
musicHighQuality: MicPreset;
/** 双声道,采样率48kHz,码率96Kbps */
musicHighQualityStereo: MicPreset;
};
/**
* 屏幕共享系统音频预设参数
*/
export declare const ScreenAudioPresets: {
/** 系统音频,码率24Kbps */
default: ScreenAudioPreset;
};
/**
* 屏幕共享预设参数
*/
export declare const ScreenPresets: {
/** 分辨率1920*1080,帧率10,码率2Mbps,createLocalScreenTrack时的默认预设参数 */
"1080p": ScreenPreset;
/** 分辨率1280*720,帧率10,码率1.5Mbps */
"720p": ScreenPreset;
};
/**
* 终端类型枚举
*/
export declare enum DeviceType {
/**
* 未知设备
*/
Unknown = 0,
/**
* Windows
*/
Windows = 1,
/**
* Android
*/
Android = 2,
/**
* iOS
*/
IOS = 3,
/**
* Linux
*/
Linux = 4,
/**
* MacOS
*/
MacOS = 5,
/**
* webrtc
*/
WebRTC = 6,
/**
* 小程序
*/
XCX = 7
}
/**
* 用户离开频道的原因
*/
export declare enum DisconnectReason {
/** 错误 */
Error = -1,
/** 主动离开 */
Self = 1,
/** 被踢离开 */
Kicked = 2,
/** 被顶号 */
Replace = 3,
/** 心跳超时离开 */
Timeout = 4,
/** 频道销毁离开 */
Destroy = 5
}
/**
* 用户断开im的原因
*/
export declare enum ImDisconnectReason {
/** 错误 */
Error = -1,
/** 主动离开 */
Self = 1,
/** 被踢离开 */
Kicked = 2,
/** 心跳超时离开 */
Timeout = 4
}
/**
* 日志打印等级
*/
export declare enum LogLevel {
DEBUG = "debug",
INFO = "info",
WARN = "warn",
ERROR = "error"
}
/**
* 日志打印目标
*/
export declare enum LogTarget {
/** 控制台打印 */
CONSOLE = "console",
/** 微信实时日志 */
WXREALTIME = "wxrealtime",
/** 不打任何日志 */
NONE = "none"
}
/**
* 流轨道类型
*/
export declare enum TrackKind {
Video = "video",
Audio = "audio"
}
export declare namespace __INNER__ {
const BaseSRTC_I: typeof BaseSRTC;
const CommonChannelEventType_I: typeof CommonChannelEventType;
const isWxxcx_I: typeof isWxxcx;
const Logger_I: typeof Logger;
const SdkError_I: typeof SdkError;
const propAssign_I: typeof propAssign;
const isObject_I: typeof isObject;
const isString_I: typeof isString;
const sleep_I: typeof sleep;
const retry_I: typeof retry;
const dateFormat_I: typeof dateFormat;
const genNonce_I: typeof genNonce;
const getHostnameFromUrl_I: typeof getHostnameFromUrl;
const dct_I: typeof dct;
function hmac_I(msg: string, key: string): string;
}
/**
* 扬声器配置
*/
export interface AudioOutputOptions {
/**
* deviceId to output audio
*
* Only supported on browsers where `setSinkId` is available
*/
deviceId?: string;
/**
* 当因权限问题自动播放失败时,禁用sdk自带的播放弹窗,手动处理
*/
disableAutoPlayDialog?: boolean;
}
/**
* 音频发布配置
*/
export interface AudioPublishOptions {
/** 描述 */
desc: string;
/** 编码格式 */
codec?: Codec;
/** 最大码率 */
maxBitrate?: number;
/**
* dtx (Discontinuous Transmission of audio), enabled by default for mono tracks.
*/
dtx?: boolean;
/**
* red (Redundant Audio Data), enabled by default for mono tracks.
*/
red?: boolean;
/**
* 优先级,默认音频优先
*/
priority?: RTCPriorityType;
/** 自定义属性 */
props?: Record<string, any>;
}
/**
* sdk编译信息
*/
export interface BuildInfo {
/** 编译时间s */
timestamp: number;
/** sdk版本号 */
version: string;
}
/**
* 摄像头采集配置
*/
export interface CameraCaptureOptions {
/**
* 设备id
*/
deviceId?: string;
/**
* webrtc专用:摄像头朝向
* @see https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/facingMode
*/
facingMode?: "user" | "environment" | "left" | "right";
/**
* 宽
*/
width?: number;
/**
* 高
*/
height?: number;
/**
* 最大帧率
*/
frameRate?: number;
}
/**
* 摄像头预设值
*/
export interface CameraPreset {
capture: CameraCaptureOptions;
publish: VideoPublishOptions;
}
/**
* 自定义消息
*/
export interface CustomMsgData {
/** 消息命令 */
action: string;
/** 消息体 */
content: any;
/** 发送者会话id */
sid: string;
/** 发送者ID */
uid: string;
/** 频道名(如果非频道内自定义消息,为空) */
channel: string;
/** 是否私发 */
private: boolean;
}
/**
* 强制离开事件data
*/
export interface DisconnectEventData {
/** 离开原因 */
reason: DisconnectReason;
/** 错误 */
error?: any;
}
/**
* web环境详情
*/
export interface EnvWebInfo extends Bowser$1.Parser.ParsedResult {
/**
* 是否支持webrtc
*/
supported: boolean;
/**
* 当前上下文是否安全(https或localhost或127.0.0.1)
*/
secure: boolean;
/**
* 是否支持获取麦克风、摄像头等媒体设备进行枚举、音视频采集、推流
*/
mediaDevices: boolean;
/**
* 是否支持发起屏幕共享
*/
screenshare: boolean;
/**
* 是否支持h264编码
*/
h264Enc: boolean;
/**
* 是否支持h264解码
*/
h264Dec: boolean;
/**
* 是否支持vp8编码
*/
vp8Enc: boolean;
/**
* 是否支持vp8解码
*/
vp8Dec: boolean;
/**
* 是否支持opus编码
*/
opusEnc: boolean;
/**
* 是否支持opus解码
*/
opusDec: boolean;
/**
* 当前支持的视频编码
*/
videoEncCodecs: RTCRtpCapabilities | null;
/**
* 当前支持的视频解码
*/
videoDecCodecs: RTCRtpCapabilities | null;
/**
* 当前支持的音频编码
*/
audeoEncCodecs: RTCRtpCapabilities | null;
/**
* 当前支持的音频解码
*/
audeoDecCodecs: RTCRtpCapabilities | null;
/**
* ua
*/
ua: string;
/**
* 屏幕宽度
*/
screenWidth: number;
/**
* 屏幕高度
*/
screenHeight: number;
/**
* 可视区域宽度
*/
clientWidth: number;
/**
* 可视区域高度
*/
clientHeight: number;
/**
* 设备的物理像素分辨率与CSS像素分辨率之比
*/
devicePixelRatio: number;
}
/**
* im强制断开事件data
*/
export interface ImDisconnectEventData {
/** 断开原因 */
reason: ImDisconnectReason;
/** 错误 */
error?: any;
}
/**
* im频道外消息
*/
export interface ImMsgData {
/** 消息命令 */
action: string;
/** 消息体 */
content: any;
/** 发送者im会话id */
sid: string;
/** 发送者ID */
uid: string;
/** 发送者昵称 */
name: string;
}
/**
* 麦克风采集配置
*/
export interface MicCaptureOptions {
/**
* 设备id
*/
deviceId?: string;
/**
* AEC回声消除
*/
echoCancellation?: boolean;
/**
* ANS降噪
*/
noiseSuppression?: boolean;
/**
* AGC自动增益
*/
autoGainControl?: boolean;
/**
* 声道数,目前只支持单声道
*/
channelCount?: number;
/**
* 采样率16k/48k,目前固定16k
*/
sampleRate?: number;
/**
* 每个采样点大小的位数(bits per sample),默认16
*/
sampleSize?: number;
/**
* the latency or range of latencies which are acceptable and/or required.
*/
latency?: ConstrainDouble;
}
/**
* 麦克风预设值
*/
export interface MicPreset {
capture: MicCaptureOptions;
publish: AudioPublishOptions;
}
/**
* 属性更改项
*/
export interface PropChangeItem<T> {
/** 属性名 */
prop: T;
/** 更改后的值 */
value: any;
/** 更改前的值 */
old: any;
}
/**
* 屏幕采集音频配置
*/
export interface ScreenAudioCaptureOptions extends Omit<MicCaptureOptions, "deviceId"> {
}
/**
* 屏幕共享音频预设值
*/
export interface ScreenAudioPreset {
capture: ScreenAudioCaptureOptions | true;
publish: AudioPublishOptions;
}
/**
* 屏幕采集配置
*/
export interface ScreenCaptureOptions {
/**
* 宽
*/
width?: number;
/**
* 高
*/
height?: number;
/**
* 帧率
*/
frameRate?: number;
/**
* 是否显示鼠标
*/
showCursor: boolean;
/**
* windows专用
*/
rect: {
x: number;
y: number;
w: number;
h: number;
};
}
/**
* 屏幕共享预设值
*/
export interface ScreenPreset {
capture: ScreenCaptureOptions;
publish: VideoPublishOptions;
}
/**
* sdk构造参数
*/
export interface SdkInitParams {
/** 日志等级 */
logLevel?: LogLevel;
/** 日志目标 */
logTarget?: LogTarget;
}
/**
* 用户离开事件data
*/
export interface UserLeaveEventData {
/** 用户id */
uid: string;
/** 离开原因 */
reason: DisconnectReason;
}
/**
* 视频发布配置
*/
export interface VideoPublishOptions {
/** 描述 */
desc: string;
/** 编码格式 */
codec?: Codec;
/**
* 宽(默认采集到的宽)
*/
width?: number;
/**
* 高(默认采集到的高)
*/
height?: number;
/** 最大码率 */
maxBitrate?: number;
/** 最大帧率 */
maxFramerate?: number;
/**
* 优先级,默认音频优先
*/
priority?: RTCPriorityType;
/**
* degradationPreference
* @see https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpEncodingParameters/degradationPreference
*/
degradationPreference?: RTCDegradationPreference;
/** 自定义属性 */
props?: Record<string, any>;
simulcasts?: VideoPublishOptions[];
}
/**
* 重试执行器函数:直接调用开始执行,.cancel()取消重试,函数失败会返回maxretry或canceled
*/
export type retryCallback<T> = (() => Promise<T>) & {
cancel: () => void;
};
/**
* 频道信息
*/
interface BaseChannelInfo {
/** 应用id */
app_id: string;
/** 频道名 */
channel: string;
/** 频道扩展属性 */
props?: Record<string, any>;
/** 频道创建时间 */
created_at: number;
/** 频道更新时间 */
updated_at: number;
/** 白板地址 */
white_board: string;
}
/**
* 流轨道信息
*/
interface BaseTrackInfo {
/** 轨道id,在stream里唯一,在全局不一定唯一 */
id: string;
/** 自定义描述,如摄像头大流、摄像头小流、共享桌面流等 */
desc: string;
/** 轨道类型 */
kind: TrackKind;
/** 编码类型 */
codec: Codec;
/** 视频宽 */
width: number;
/** 视频高 */
height: number;
/** 视频帧率 */
fps: number;
/** 视频角度 */
angle: number;
/** 码率 */
bitrate: number;
/** 音频采样率 */
sample_rate: number;
/** 流扩展属性 */
props?: Record<string, any>;
}
/**
* 用户信息
*/
interface BaseUserInfo {
/** 应用id */
app_id: string;
/** 用户id */
uid: string;
/** 会中昵称 */
name: string;
/** 设备类型 */
device_type: DeviceType;
/** 设备ID */
device_id: string;
/** 客户端RTCsdk版本号 */
version: string;
/** 用户扩展属性 */
props?: Record<string, any>;
/** 网络 */
net: string;
/** 服务分组 */
sg: string;
/** 更新时间 */
updated_at: number;
/** 频道名 */
channel: string;
/** 会话id */
sid: string;
/** 是否观众,类似研讨会观众,只收流 */
is_audience: boolean;
/** 进入时间 */
join_at: number;
/** 退出时间 */
leave_at: number;
/** 流轨道 */
stream_tracks?: BaseTrackInfo[];
}
export {
BaseChannelInfo as ChannelInfo,
BaseTrackInfo as TrackInfo,
BaseUserInfo as UserInfo,
CommonImEventType as ImEventType,
};