yirtc-sdk-web
Version:
基于WebRTC的实时音视频SDK
83 lines (82 loc) • 2.32 kB
TypeScript
/**
* 媒体适配器接口定义
* 用于抽象不同平台的媒体设备操作
*/
/**
* 媒体约束配置
*/
export interface MediaConstraintsConfig {
audio?: boolean | MediaTrackConstraints;
video?: boolean | MediaTrackConstraints;
}
/**
* 屏幕共享约束配置
*/
export interface ScreenShareConstraintsConfig {
video?: boolean | MediaTrackConstraints;
audio?: boolean | MediaTrackConstraints;
surfaceSwitching?: 'include' | 'exclude';
selfBrowserSurface?: 'include' | 'exclude';
systemAudio?: 'include' | 'exclude';
}
/**
* 设备信息
*/
export interface DeviceInfo {
deviceId: string;
kind: string;
label: string;
groupId: string;
}
/**
* 媒体适配器接口
*/
export interface MediaInterface {
/**
* 获取用户媒体流
* @param constraints 媒体约束
* @returns Promise<MediaStream>
*/
getUserMedia(constraints: MediaConstraintsConfig): Promise<MediaStream>;
/**
* 获取屏幕共享流
* @param constraints 屏幕共享约束
* @returns Promise<MediaStream>
*/
getDisplayMedia(constraints?: ScreenShareConstraintsConfig): Promise<MediaStream>;
/**
* 枚举媒体设备
* @returns Promise<DeviceInfo[]>
*/
enumerateDevices(): Promise<DeviceInfo[]>;
/**
* 检查浏览器是否支持指定的媒体约束
* @param constraints 媒体约束
* @returns Promise<boolean>
*/
isSupportedConstraints(constraints: MediaTrackSupportedConstraints): Promise<boolean>;
/**
* 播放媒体流
* @param stream 媒体流
* @param element 视频元素
* @returns Promise<void>
*/
playStream(stream: MediaStream, element: HTMLVideoElement | HTMLAudioElement): Promise<void>;
/**
* 停止媒体流
* @param stream 媒体流
*/
stopStream(stream: MediaStream): void;
/**
* 获取音频音量
* @param stream 媒体流
* @returns number 音量大小 (0-1)
*/
getAudioLevel(stream: MediaStream): Promise<number>;
/**
* 截取视频帧
* @param videoTrack 视频轨道
* @returns Promise<Blob> 图片Blob
*/
captureFrame(videoTrack: MediaStreamTrack): Promise<Blob>;
}