-
WebRTC 쿠렌토(Kurento)란?프로젝트/WebRTC 화상통화 프로젝트 2022. 7. 4. 23:05
이전 시간에 N:M 환경을 제공하기 위해 Mesh(P2P), SFU, MCU 방식에 SFU방식을 선택하기로 결정했습니다.
https://junuuu.tistory.com/379?category=1014988
미디어 서버를 통해 얻을 수 있는 이점
P2P를 사용하면 전송하고 받는 스트림의 수가 엄청나게 많아질 수 있습니다.
이때 미디어 서버를 통해 클라이언트가 송신해야 하는 스트림 수를 줄일 수 있습니다.
(MCU를 사용하면 수신하는 스트림도 줄일 수 있음)
미디어를 어떤 목적으로든 기록 및 저장할 수 있습니다.
기존의 기능에 실시간 이미지 감지 기능을 추가하는 등 혁신적인 실시간 상호작용 기능을 추가할 수 있습니다.
호환되지 않는 클라이언트 간에 코덱 및 형식을 조정합니다.
WebRTC 미디어 서버들 비교 결과
WebRTC 생태계의 오픈 소스 미디어 서버들은 여러 가지가 있습니다. (Jitsi, Kurento, Mediasoup, Medooze)
여러 가지 자료들을 뒤져보았지만 Kurento가 가장 깔끔한 문서를 제공하며 참고할 자료가 많은 것 같습니다.
또한 미디어 스트림에 컴퓨터 비전, 실시간 미디어 수정과 같은 서비스와 상호 운영과 같은 흥미로운 기능을 구성하고 통합할 수 있습니다.
다양한 미디어 서버들에 대해서 조금 더 알고 싶다면 다음 링크를 참고하세요
공식문서를 기반으로 작성한 Kurento란?
WebRTC용 미디어 서버를 개발할 수 있는 오픈소스 프로젝트입니다.
쿠렌토의 특징
- Modular Pipelines
애플리케이션 개발자는 Kurento를 사용하여 원하는 미디어 요소로 소위 미디어 파이프라인을 제어하여 필요에 맞게 완전히 맞춤화된 아키텍처를 효과적으로 형성합니다.
그룹 통신, 미디어 형식 트랜스코딩 및 시청각 흐름 라우팅을 위해 여러 내장 모듈이 제공됩니다.
- Built-in Modules
- WebRtcEndpoint는 WebRTC 미디어 스트림을 보내고 받을 수 있습니다.
- PlayerEndpoint는 RTSP(실시간 스트리밍 프로토콜), HTTP 또는 로컬 소스의 미디어를 사용하는 데 사용할 수 있습니다.
- RecorderEndpoint는 미디어 스트림을 로컬 또는 원격 파일 시스템에 저장할 수 있습니다.
- FaceOverlayFilter는 비디오 스트림에서 사람의 얼굴을 감지하여 그 위에 오버레이 이미지를 추가하는 간단한 Computer Vision 예제입니다.
JSON-RPC Protocol(JSON-원격 프로시저 호출 프로토콜)
Kurento Protocol이라고도 부르는 JSON-RPC 프로토콜을 통해 통신이 이루어지는데 3가지 시나리오가 있습니다.
1. 브라우저에서 직접 JavaScript SDK를 사용하여 Media Server로 호출(실제 서비스에서는 추천되지 않음)
2. Java EE와 같은 서버에서 Java SDK를 사용
3. Node.js 서버에서 JavaScript SDK를 사용
왜 미디어 서버를 사용할까?
위에서도 언급하였지만 요약하자면 다음과 같습니다
여러 스트림을 하나의 스트림으로 믹싱(MCU media server)
미디어를 저장(Recodring media server)
호환되지 않는 클라이언트 간에 코덱 및 형식을 즉시 적용합니다.(Transcoding media server)
쿠렌토의 설계 원칙
1. 하나의 서비스에서 여러 개의 미디어 서버를 호출할 수 있다.
2. PaaS 로서 동작하고 클라우트에 적합합니다.
3. 미디어 파이프라인을 통해서 미디어 요소들을 연결합니다.
4. 개발자들이 쿠렌토 내부의 복잡성을 인식할 필요가 없다.
5. 개발자가 클라이언트 장치에서 미디어를 전송, 인코딩/디코딩, 렌더링 하는 복잡성을 처리할 필요가 없다.
6. 디스코드,스카이프같은 대화형 통신뿐만 아니라 실시간 스트리밍도 지원합니다.
출처
https://meetrix.io/blog/webrtc/introduction.html
https://webrtc.ventures/2017/11/a-guide-to-webrtc-media-servers-open-source-options/
https://doc-kurento.readthedocs.io/en/stable/user/intro.html#why-a-webrtc-media-server
'프로젝트 > WebRTC 화상통화 프로젝트' 카테고리의 다른 글
OpenVidu REST API 공식문서 분석 (0) 2022.07.11 OpenVidu 배포하기 (3) 2022.07.10 OpenVidu 공식문서로 시작해보기 (0) 2022.07.09 WebRTC란? (+P2P, SFU, MCU 동작과정) (0) 2022.07.02 라이브 스트리밍 프로토콜 비교(RTMP vs HLS vs WebRTC) (0) 2022.07.01