쿠렌토란?
전체 WebRTC 스택의 기능적 구현을 제공하는 미디어 서버이다.
쿠렌토를 사용할 수 있는 3가지 방법
1. 웹소켓 브라우저로부터 직접적으로 Kurento JavaScript SDK를 사용하기. ( 빠르게 테스트할 때만 추천)
2. Java EE 서버에서 Kurento Java SDK를 사용하기. ( 웹브라우저는 HTML, WebRTC 시그널링과 같은 작업을 위한 애플리케이션의 클라이언트)
3. Node.js에 Kurento JavaScript SDK을 사용하기.
Media Server 를 왜 사용하는가?
WebRTC는 P2P연결을 통해 웹 브라우저와 모바일 애플리케이션의 RTC기능을 제공하는 프로토콜과 APIs이다.
소프트웨어나 별도의 플러그인이 필요없고 단지 Peer 와 Peer 간의 P2P연결을 통해 video, data 스트리밍이 가능하다.
유튜브, 인스타 라이브와 같은 대규모의 서비스를 하기 위해서는 한 명의 스트리머와 N명의 뷰어들이 존재한다.
대규모 서비스에서 1:N 스트리밍 또는 다양한 기능들을 추가하기에 P2P 방식을 사용해서 개발하기엔 무리가 있다.
스트리밍하고 있는 클라이언트(Peer)에 10만명의 Viewer들이 연결되어 있다면 스트리머의 클라이언트는 터질 것이다.
( P2P보다는 SFU, MCU 등의 방식으로 개발 )
그렇기 때문에 Peer의 중간에 미디어 서버가 필요하고 내가 사용하고자 하는 미디어 서버는 쿠렌토 미디어 서버(KMS)이다.
미디어 서버는 어떤 기능을 제공 하는가?
WebRTC 미디어 서버는 미디어 트래픽이 통과하는 멀티미디어 미들웨어이다.
미디어 서버에서는 들어오는 미디어 스트림을 처리하고 다른 결과물을 내보낼 수 있다.
예를 들어,
1. Group Communications : 한 명의 스트리머가 방송을 시작하고, 그 방에 접속해 있는 참여자들에게 미디어 스트림을 배포한다. (다중 회의 장치 MCU 역할 수행)
2. Mixing : 여러 수신 스트림을 하나의 복합 스트림으로 변환한다.
3. Transcoding : 호환되지 않는 클라이언트 간에 코덱 및 형식을 즉석에서 조정한다.
4. Recording : 미디어에 들어오는 스트림을 영구적인 방식으로 저장한다.
쿠렌토 미디어 서버(KMS)가 제공하는 기능
1. HTTP, RTP, WebRTC를 포함한 네트워크 스트리밍 프로토콜 지원
2. 미디어 믹싱 및 미디어 라우팅/디스 패칭을 지원하는 그룹 통신 ( MCU 및 SFU 기능 모두)
3. Computer Vision과 Augmented Reality 알고리즘을 구현하는 필터에 대한 일반적인 지원
4. WebM과 MP4에 대한 쓰기 작업을 지원하고 GStreamer에서 지원하는 모든 형식으로 재생하는 미디어 저장소
5. VP8, H.264, H263, AMR, OPUS, Speex, G.711 등을 포함하여 GStreamer에서 지원하는 코덱 간의 자동 미디어 트랜스 코딩.
쿠렌토 디자인 원리
1. 미디어와 애플리케이션 서비스 배포
- 쿠렌토 미디어 서버와 애플리케이션은 여러 machines에 배포하고 확장할 수 있다.
- 하나의 서비스에서 여러 개의 Kurento Media Server를 호출할 수 있다.
- 마찬가지로 Kurento Media Server 도 여러 기기의 요청을 들어줄 수 있다.
2. 클라우드에 적합
- 쿠렌토는 PaaS(Platform as a Service) 컴포넌트를 사용한다.
3. 미디어 파이프라인
- 미디어 파이프라인을 통해서 미디어 요소들을 연결하는 것은 직관적인 접근이다.
4. 애플리케이션 개발
- 개발자들이 쿠렌토 내부의 복잡성을 인식할 필요가 없다.
5. End-to-End 통신 기능
- 개발자가 클라이언트 장치에서 미디어를 전송, 인코딩/디코딩, 렌더링 하는 복잡성을 처리할 필요가 없다.
6. 완전히 처리 가능한 미디어 스트림
- 대화(Skype, Discode)뿐 아니라 실시간 스트리밍(트위치, 인스타 라이브) 모두 지원한다.
7. 미디어의 모듈식 처리
- 모듈식 처리를 통해 개발자가 사용하고자 하는 논리들을 엮어서 만들 수 있도록 했다.
8. 검사 가능한 처리
- 풍부한 QoS 모니터링, 청구 등 상세한 정보를 생성 가능하다.
9. 원활한 IMS 통합
- IMS 인프라로의 원활한 통합을 지원한다.
10. 미디어 Adaptation Layer
참고자료
doc-kurento.readthedocs.io/en/latest/user/intro.html
'WebRTC' 카테고리의 다른 글
[WebRTC] Kurento를 사용하여 실시간 스트리밍하기 (3) | 2021.01.25 |
---|---|
[WebRTC] WebRTC를 공부하며 스트리밍 과정 익히기 (1) | 2021.01.16 |
[WebRTC] NAT, ICE, STUN, TURN 이란? ( WebRTC를 이해하기 위해 필요한 지식들) (2) | 2021.01.11 |
[Kurento] 쿠렌토 서버 Docker로 실행시켜보기 (feat. 윈도우) (1) | 2021.01.08 |
[WebRTC] WebRTC란 무엇일까? (0) | 2020.12.22 |