@sawport/peers-caller
Version:
WebRTC multi-peer video call library with mesh architecture supporting up to 4 participants
101 lines • 2.73 kB
TypeScript
/**
* 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