기록해야 기억에 남는다
WebRTC (3) - About Kurento 본문
1) 'Kurento' 란 무엇인가?
- 'Kurento' or 'KMS (Kurento Media Server)'는 'webRTC' 플랫폼용 고급 비디오 애플리케이션을 개발하는 데 사용할 수 있는 멀티미디어 서버 패키지이다.
- 즉, webRTC 서비스를 위한 Signaling, STUN/TURN, Media 서버 기능을 제공한다.
- Kurento 이외에도 Mediasoup, Janus, Jitsi 등 다양한 오픈소스가 존재함.
2) 'Kurento'의 특징
2-1) 모듈식 파이프라인 제공 (modular pipelines)
- KMS (kurento media server)가 있고 미디어 서버에서 제공하는 기능을 조작하기 위한 Kurento client SDK 제공
- 여기서 client는 iOS, Android와 같은 Client가 아닌 KMS를 조작하기 위한 API 서버를 의미함.
- webRTC 및 RTP 송수신, 오디오/비디오 믹서, 미디어 녹음 등의 기능의 빌딩 블록 제공
- 이러한 모듈들을 미디어 스트림 사이에 삽입/삭제 하여 개발자의 목적에 맞게 프로그램 확장 가능
- 그룹 통신, 트랜스코딩, 라우팅 등을 위해 내장 모듈들이 제공됨
- kurento 에서 제공하는 모듈 방식을 통해 SFU, MCU 아키텍쳐를 구성할 수 있음.
2-2) 내장 모듈 (built-in module)
- Kurento는 각 모듈을 API 형태로 제공하고 있음
- 각 모듈을 이용하여 KMS에서 제공해주는 기능을 이용할 수 있음
- 모듈을 조합하여 개발자의 의도에 맞는 서비스 개발 가능
- WebRtcEndpoint의 경우 WebRTC의 미디어 스트림을 주고 받는 역할을 수행함.
- PlayerEndpoint의 경우 RTSP, HTTP, 로컬에서 미디어를 소비하는 역할을 수행함 (미디어 재생 등)
- RecorderEndpoint의 경우 미디어 스트림을 로컬/원격 파일 시스템에 저장하는 역할을 수행함
- FaceOverlayFilter의 경우 비디오 스트림에서 사람의 얼굴을 감지하여 그 위에 간단한 오버레이 이미지를 추가하는 역할을 수행함 (Computer Vision)
2-3) Kurento Protocol (JSON-RPC protocol)
- KMS는 WebSocket 연결을 통해 직접 액세스할 수 있는 Kurento 프로토콜이라는 JSON-RPC 프로토콜을 통해 모든 API 기능을 제공함.
- Kurento에서 제공하는 예제를 보면 JAVA, JavaScript 기반의 API를 제공함.
- JSON 기반의 Kurento protocol을 직접 작성하면 타 언어에서도 KMS의 기능을 이용할 수 있음
- Kurento의 기능을 이용하기 위해 WebRTC 브라우저에서 직접 Kurento JavaScript SDK 사용
- 빠른 테스트 및 개발에만 권장되며 프로덕션 서비스에는 권장되지 않음
- Java 애플리케이션 서버에서 Kurento Java SDK 사용.
- Node.js 애플리케이션 서버에서 Kurento JavaScript SDK 사용
참고
- kurento official website: https://doc-kurento.readthedocs.io/en/stable/index.html
- 'gh402' blog: https://gh402.tistory.com/43%EC%A0%95%EB%A6%AC%ED%95%98%EA%B8%B0/
'Live-Streaming > WebRTC' 카테고리의 다른 글
WebRTC (6) - Kurento RecorderEndpoint (2) (0) | 2023.03.10 |
---|---|
WebRTC (5) - Kurento RecorderEndpoint (0) | 2023.03.07 |
WebRTC (4) - Kurento One2ManyCall (0) | 2023.03.07 |
WebRTC (2) - SDP, RTP (0) | 2023.03.07 |
WebRTC (1) (0) | 2023.03.07 |