Ramble-FE / services / platform / adapter.ts
adapter.ts
Raw
import { IPlatformWebRTC } from "./adapter.inteerfce";

export class PlatformAdapter implements IPlatformWebRTC {

    createPeerConnection(config: RTCConfiguration) {
        return new RTCPeerConnection(config);
    }

    createSessionDescription(init: RTCSessionDescriptionInit) {
        return new RTCSessionDescription(init);
    }

    createIceCandidate(init: RTCIceCandidateInit) {
        return new RTCIceCandidate(init);
    }

    async getUserMedia(): Promise<MediaStream> {
        if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {
            throw new Error("getUserMedia is not supported in this browser");
        }

        return await navigator.mediaDevices.getUserMedia({
            audio: {
                echoCancellation: true,
                noiseSuppression: true,
                autoGainControl: true,
            },
            video: {
                width: { min: 480, ideal: 720, max: 1280 },
                height: { min: 360, ideal: 540, max: 960 },
                frameRate: { ideal: 30, max: 30 },
            },
        });
    }

    switchCamera(mediaStream: MediaStream): Promise<boolean> {
        console.warn("카메라 전환은 웹 플랫폼에서 지원되지 않습니다.");
        return Promise.resolve(false);
    }

}