-
Notifications
You must be signed in to change notification settings - Fork 1
Mediasoup 기본 개념
GWANGHYEON KIM edited this page Dec 3, 2024
·
2 revisions
-
Worker
- CPU 코어별로 독립적인 워커 생성
- 실제 미디어 처리를 담당하는 프로세스
-
Router
- 가상의 컨퍼런스 룸 역할
- 참가자들의 미디어 스트림 관리
- Producer Transport: 클라이언트 → 서버 미디어 전송
- Consumer Transport: 서버 → 클라이언트 미디어 전송
- 각 클라이언트는 두 종류의 transport 필요
- Producer: 미디어 스트림 생성 주체
- Consumer: 미디어 스트림 수신 주체
[Client] ←→ [Signaling Server] ←→ [MediaSoup Server]
- WebRTC 연결 정보 교환 (ICE candidate, SDP)
- WebSocket 기반 실시간 통신
Producer → Producer Transport → Router → Consumer Transport → Consumer
- Router를 통한 중앙 집중식 미디어 스트림 관리
- 선택적 미디어 전송 가능
- 다중 워커 지원으로 CPU 자원 효율적 활용
- 대규모 동시 접속자 처리 가능
- 다양한 코덱 지원 (VP8, VP9, H.264, OPUS)
- 비디오/오디오 품질 조절 가능
- C++ 기반 핵심 엔진
- Node.js 인터페이스로 개발 용이성 확보
-
시그널링 서버
- WebSocket 기반 실시간 통신
- 메시지 프로토콜 정의
-
에러 처리
- 네트워크 불안정성 대응
- 스트림 끊김 복구 로직
-
리소스 관리
- Worker 풀 최적화
- Router 생명주기 관리
- Worker 풀 구성
- Router 생성 로직 구현
- Transport 연결 처리
- Producer/Consumer 관리
- 시그널링 서버 통합
- Mediasoup 포트 매핑 문제
- swagger 같은 응답 코드에 다양한 응답 보여주기
- Sudo가 계속 비밀번호를 요청함
- Docker 이미지가 너무 크다
- Git action에서 도커 이미지 빌드 시간을 단축시켜보자
- Docker compose를 이용해서 메모리 사용률을 줄여보자
- 방송 녹화 시 CPU 과부하 문제를 해결해보자
- Release 브랜치? 너 필요해?
- 로딩이 너무 짧아…!
- NestJS ORM으로 무엇을 사용해야 할까?
- WebRTC를 이용한 1:N 스트리밍 서비스에서 시그널링 서버가 필요할까?
- 실시간 채팅 구현: 인메모리 방식을 선택한 이유
- MySQL 아키텍처 개선: DB 의존성 분리와 서버 역할 명확화
- 브라우저 창이 최소화되면 비디오 송출이 안된다…!
- Mediasoup 기본 개념
- DLTS와 Signaling
- Tell, Don't Ask (TDA) 원칙이란
- VPC(Virtual Private Cloud) 학습 정리
- 순환참조: A 서비스 ‐ B 서비스 vs. A 서비스 ‐ B 레포지토리
- Dto 메서드 전략
- WebRTC란?
- 자바스크립트 패키지 매니저(npm, yarn, pnpm)
- shadcn/ui을 이용해 UI 개발 생산성 높이기
- React 이벤트 핸들러 네이밍(on vs handle)
- React-router-dom의 createBrowserRouter을 사용해보기
- fetch vs axios