UNPKG

yirtc-sdk-web

Version:

基于WebRTC的实时音视频SDK

83 lines (82 loc) 2.32 kB
/** * 媒体适配器接口定义 * 用于抽象不同平台的媒体设备操作 */ /** * 媒体约束配置 */ 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>; }