Skip to content

webRTC로 실시간 방송이 가능할까?

Seungheon Han edited this page Dec 3, 2024 · 1 revision

webRTC는 실시간 통신을 위해 설계된 기술이다. 기본 설계 철학이 P2P에 기반을 두고 있어, 주로 화상 회의, 실시간 현업 도구 등 소규모 실시간 상호작용에서 많이 사용된다.

또한, WebRTC는 이름에서도 알 수 있듯이 웹(Web) 기반으로 설계되어 별도의 소프트웨어 설치 없이 브라우저에서 바로 사용할 수 있는 장점이 있다. 이 때문에 WebRTC는 모든 주요 브라우저에서 네이티브로 지원되며, 데스크톱과 모바일을 포함한 다양한 플랫폼에서 쉽게 실시간 통신을 구현할 수 있다.

그럼 이걸 실시간 방송 스트리밍 서비스에 적용할 수 없을까??

현재 실시간 방송 스트리밍 서비스에서 방송을 하려면 다음과 같은 과정을 거친다.

  1. OBS와 같은 인코더 프로그램 사용
  2. RTMP 서버로 인코딩된 데이터 전송
  3. RTMP 서버에서 받은 데이터를 HLS 또는 DASH로 변환
  4. HLS/DASH 세그먼트를 CDN에 분산 캐싱하여 다수의 시청자들에게 전달

현재 만들고자 하는 서비스에서 다수의 사용자들이 출석을 하면 자동으로 방송이 켜져야 한다. 즉, 사용자가 별도로 OBS와 같은 인코더 프로그램을 실행하고, 설정하는 과정을 생략하고 브라우저만으로 쉽게 방송을 시작할 수 있어야 한다.

그럼 webRTC의 SFU, MCU를 활용하여 실시간 방송을 구현하면 P2P 방식이 아니니까 가능하지 않을까??

  1. 중앙 서버에서 실시간 데이터 관리: SFU나 MCU를 사용하면 모든 데이터를 중앙 서버에서 중계하게 되어, P2P 방식이 아닌 서버 기반 연결 구조를 만들 수 있다. 이렇게 하면 데이터가 서버를 거쳐가므로 안정적으로 실시간 방송 데이터를 저장하고 관리할 수 있다.
  2. 클라이언트 요청 시 데이터 제공: 중앙 서버에 실시간으로 전송된 데이터를 일정 시간 단위로 저장할 수 있고, 클라이언트가 요청할 때마다 서버에서 데이터를 제공할 수 있다. 이 구조는 RTMP와 유사하게 서버가 데이터를 중계하면서 방송을 제공할 수 있게 한다.
  3. 인코더 불필요: RTMP와 달리 WebRTC는 브라우저와 애플리케이션에서 기본 코덱(VP8, H.264)을 지원하므로, 별도의 인코더 없이 실시간 방송이 가능하다. 이는 사용자가 간편하게 브라우저만으로 방송을 시작할 수 있는 환경을 제공한다.

👥 팀 강점

🧑‍💻 개발 일지

📌 ALL

📌 FE

📌 BE

💥 트러블 슈팅

📌 FE

📌 BE

🤔 고민

📚 학습 정리

📌 김광현

📌 백지연

📌 전희선

📌 한승헌

🤝 회의록

🗒️ 데일리 스크럼

💬 팀 회고


👨‍👩‍👧‍👦 소개

🌱 문화

🔨 기술 스택

⚙️ 서비스 아키텍쳐

🚧 CI/CD

🌊 Flow

💭 6주를 보내면서

Clone this wiki locally