기록해야 기억에 남는다

WebRTC (3) - About Kurento 본문

Live-Streaming/WebRTC

WebRTC (3) - About Kurento

아케인222 2023. 3. 7. 20:01

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 사용
    1. 빠른 테스트 및 개발에만 권장되며 프로덕션 서비스에는 권장되지 않음
  1. Java 애플리케이션 서버에서 Kurento Java SDK 사용.
  2. Node.js 애플리케이션 서버에서 Kurento JavaScript SDK 사용

 

 

참고

'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