UNPKG

@sawport/peers-caller

Version:

WebRTC multi-peer video call library with mesh architecture supporting up to 4 participants

101 lines 2.73 kB
/** * CallMediaStream - Media stream management for PeersCaller * Handles camera, microphone, and screen sharing streams */ import type { MediaStreamConfig, ScreenShareConfig } from "../types"; export declare class CallMediaStream { private stream; private videoElement; private constraints; private isScreenShare; constructor(constraints?: MediaStreamConfig); /** * Initialize media stream with camera and microphone */ initialize(): Promise<MediaStream>; /** * Start screen sharing */ startScreenShare(config?: ScreenShareConfig): Promise<MediaStream>; /** * Stop screen sharing and revert to camera */ stopScreenShare(cameraStream?: MediaStream | null): Promise<MediaStream>; /** * Toggle audio track */ toggleAudio(enabled: boolean): void; /** * Toggle video track */ toggleVideo(enabled: boolean): void; /** * Create and return a video element for displaying the stream */ createVideoElement(): HTMLVideoElement; /** * Attach stream to an existing video element */ attachToVideoElement(videoElement: HTMLVideoElement): void; /** * Replace the current stream (useful for switching between camera and screen) */ replaceStream(newStream: MediaStream): void; /** * Get current stream */ getStream(): MediaStream | null; /** * Get video element */ getVideoElement(): HTMLVideoElement | null; /** * Check if current stream is screen share */ getIsScreenShare(): boolean; /** * Get audio track enabled state */ isAudioEnabled(): boolean; /** * Get video track enabled state */ isVideoEnabled(): boolean; /** * Get stream information */ getStreamInfo(): { id: string; videoTracks: number; audioTracks: number; isScreenShare: boolean; videoEnabled: boolean; audioEnabled: boolean; videoConstraints: MediaTrackSettings | null; audioConstraints: MediaTrackSettings | null; } | null; /** * Stop all tracks and cleanup */ cleanup(): void; /** * Handle media errors and provide user-friendly messages */ private handleMediaError; /** * Get available media devices */ static getAvailableDevices(): Promise<{ videoDevices: MediaDeviceInfo[]; audioDevices: MediaDeviceInfo[]; }>; /** * Check if browser supports required features */ static checkBrowserSupport(): { getUserMedia: boolean; getDisplayMedia: boolean; webRTC: boolean; }; } //# sourceMappingURL=CallMediaStream.d.ts.map