Media/WebRTC

WebRTC 란? (소개, 개요)

dpswlsldj 2021. 3. 12. 19:58
728x90

WebRTC (Web Real-Time Communication)


WebRTC는 웹 브라우저, Andoird, iOS 등에서 사용 가능한 P2P 음성, 비디오, 데이터 교환 솔루션이라고 볼 수 있습니다.

 

구글이 개발하여 오픈 소스화 하였고 그 뒤로 IETF(Internet Engineering Task Force, 국제 인터넷 표준화 기구)가 프로토콜 표준화 작업을 진행하고 W3C(World Wide Web Consortium)가 API 정의를 진행하였습니다.

- ko.wikipedia.org/wiki/WebRTC

 

 

webrtc.org/getting-started/overview 에서 기본적인 설명을 확인할 수 있으며 모질라 재단에서도 정리해둔 글타래가 있습니다.

- developer.mozilla.org/ko/docs/Web/API/WebRTC_API

 

 

지원하는 브라우저


WebRTC가 지원하는 브라우저의 범위는 아래와 같습니다.

카테고리 브라우저
PC Microsoft Edge 12+
Google Chrome 28+
Mozilla Firefox 22+
Safari 11+
Opera 18+
Vivaldi 1.9+
Android Google Chrome 28+
Mozilla Firefox 24+
Opera Mobile 12+
Chrome OS  
Firefox OS  
Blakberry 10  
iOS 11 MobileSafari/WebKit
Tizen 3.0  

리눅스에서는 GStreamer를 통해 WebRTC를 사용할 수 있는 것처럼 보입니다.

 

Architecture


Web API는 JavaScript로 되어있고 W3C에서 작성합니다. WebApp 개발자는 기본적으로는 이쪽 레이어만 구현하면 WebRTC를 사용할 수 있습니다.

 

WebRTC C++ API는 Media Stream과 Peer Connection으로 구성되며 각 브라우저 개발사에서 제작합니다.

 

WebRTC는 VP8 코덱 (구글)을 사용하고 통신 프로토콜로 SRTP(Secure Real-time Transport Protocol)를 사용합니다.

 

https://webrtc.github.io/webrtc-org/architecture/

 

 

 

시그널링 (Signaling)


P2P 통신을 위해 두 기기가 서로 연결이 되어야 합니다. 그런데 두 기기를 연결하기 위해서는 서로 간의 IP 정보 등을 알아야 합니다. 인터넷 상에 떠다니는 기기를 찾기 위해 시그널링 과정이 필요합니다.

 

시그널링은 정의된 규격이 없고 각자 구현하기 나름입니다. WebSocket 연결을 통해 JSON을 사용할 수도 있고, XMPP, SIP, XMLHttpRequest 등을 사용할 수도 있습니다.

 

시그널링 과정은 아래의 단계로 진행됩니다.

 

  1. 각 사용자(이하 peer)는 WebRTC session의 종단을 나타내기 위해 RTCPeerConnection 객체를 생성합니다.
  2. 각 peer는 icecandidate 이벤트를 처리하기 위한 핸들러를 설정(establish)하고 시그널링 채널을 통해 candidate들을 발신합니다.
  3. 각 peer는 track 이벤트를 처리하기 위한 핸들러를 설정합니다. 이는 remote peer가 stream에 track을 추가할 때 이를 수신하여 처리하기 위한 것입니다. 이 때, <video> element등을 사용하여 수신자(consumer)에게 track을 연결합니다.
  4. 발신자(caller)는 서로를 식별할 수 있도록 고유 식별자(unique identifier) 또는 토큰을 생성하고 수신 peer와 공유합니다. 토큰의 형태를 구현하는 사람 편한대로(각자 회사의 보안 규격대로) 하면 됩니다.
  5. 각 peer는 시그널링 서버(WebSocket 등 미리 합의 프로토콜을 생성해둔 서버)에 접속하여 메시지를 교환합니다.
  6. 각 peer는 4단계에서 생성한 토큰 등의 정보와 함께 WebRTC session에 참여하기 원한다는 신호를 보냅니다.

 

* P2P 이므로 서로가 발신자이자 수신자가 될 수 있는데, 제가 알아보기 쉽게 위와 같이 표현했습니다.

 

W3C의 Signaling 예제 : www.w3.org/TR/webrtc/#simple-peer-to-peer-example

참고


- WebRTC 1.0: Real-Time Communication Between Browsers - W3C

  - www.w3.org/TR/2021/REC-webrtc-20210126/

 

- WebRTC Overview - webrtc.org

  - webrtc.org/getting-started/overview

 

- 웹RTC 6년, 어제와 오늘 그리고 미래

  - www.comworld.co.kr/news/articleView.html?idxno=49320

'Media > WebRTC' 카테고리의 다른 글

[WebRTC] Google Codelab 따라하기 - 2  (0) 2021.03.18
[WebRTC] Google Codelab 따라하기 - 1  (0) 2021.03.17