황현동 블로그 개발, 인생, 유우머

251127 WebRTC RTMP 비교

Tags:

WebRTC RTMP 비교

개요

실시간 통신과 스트리밍 분야에서 WebRTC와 RTMP는 각각 다른 목적과 특성을 가진 핵심 기술입니다. 이 글에서는 두 기술의 원리, 프로세스, 장단점, 그리고 실제 사용사례를 상세히 비교 분석하여 프로젝트에 적합한 기술 선택을 도와드리겠습니다.

WebRTC (Web Real-Time Communication)

소개

WebRTC는 웹 브라우저와 모바일 애플리케이션에서 실시간 오디오, 비디오, 데이터 통신을 가능하게 하는 오픈소스 표준입니다. Google, Mozilla, Opera 등이 공동으로 개발했습니다.

원리

  • P2P 통신: 클라이언트 간 직접 연결
  • 브라우저 네이티브: 플러그인 없이 브라우저에서 직접 동작
  • 실시간 전송: 초저지연 (20-150ms)
  • 미디어 스택: 오디오/비디오 코덱 내장

WebRTC 프로세스

1. 연결 설정 과정 (Signaling)

Peer A                    Signaling Server                    Peer B
  |                             |                             |
  |--- Offer (SDP) ------------->|                             |
  |                             |-------- Offer ------------->|
  |                             |<------- Answer -------------|
  |<-- Answer (SDP) -------------|                             |
  |                             |                             |
  |--- ICE Candidates --------->|                             |
  |                             |---- ICE Candidates ------->|
  |<-- ICE Candidates -----------|                             |
  |                             |<--- ICE Candidates ---------|
  |                             |                             |
  |============= P2P Connection Established =================|

2. 미디어 처리 파이프라인

MediaDevices.getUserMedia()
    ↓
MediaStream
    ↓
RTCPeerConnection.addStream()
    ↓
RTP Packets
    ↓
Network (UDP/SRTP)
    ↓
Remote RTCPeerConnection
    ↓
Remote MediaStream
    ↓
<video>/<audio> element

3. NAT 트래버설 (STUN/TURN)

Client A ←→ NAT A ←→ Internet ←→ STUN Server
                          ↓
                      Public IP 확인
                          ↓
Client A ←――――――――――――――――――――→ Client B (Direct P2P)

NAT 통과 실패 시:
Client A ←→ TURN Server ←→ Client B (Relay)

WebRTC 장점

✓ 초저지연 (20-150ms)
✓ P2P 직접 연결로 서버 부하 감소
✓ 브라우저 네이티브 지원 (플러그인 불필요)
✓ 보안성 우수 (DTLS/SRTP 암호화)
✓ 양방향 실시간 통신
✓ 적응적 비트레이트 (자동 품질 조정)
✓ 무료 오픈소스

WebRTC 단점

✗ NAT/방화벽 문제 (STUN/TURN 서버 필요)
✗ 대규모 브로드캐스팅 어려움
✗ 브라우저 호환성 이슈 (Safari 제한)
✗ 복잡한 시그널링 구현 필요
✗ 모바일 배터리 소모량 높음
✗ 네트워크 불안정 시 품질 저하

RTMP (Real-Time Messaging Protocol)

소개

RTMP는 Adobe Flash Player를 위해 개발된 실시간 스트리밍 프로토콜입니다. 현재는 라이브 스트리밍과 비디오 온디맨드 서비스에 널리 사용됩니다.

원리

  • TCP 기반: 안정적인 스트림 전송
  • 서버-클라이언트 모델: 중앙 서버를 통한 스트리밍
  • 청크 기반 전송: 데이터를 작은 청크로 나누어 전송
  • Flash 기반: 원래 Flash Player를 위해 설계

RTMP 프로세스

1. RTMP 연결 및 스트리밍 과정

Publisher (OBS/FFmpeg)    RTMP Server          Viewer (Browser/App)
        |                      |                       |
        |--- TCP Handshake --->|                       |
        |--- RTMP Connect ----->|                       |
        |<-- Connection ACK ----|                       |
        |--- Create Stream ---->|                       |
        |--- Publish Stream --->|                       |
        |--- Video/Audio ------>|                       |
        |       Data            |                       |
        |                       |<-- Request Stream ----|
        |                       |---- Video/Audio ----->|
        |                       |        Data           |

2. RTMP 청크 구조

RTMP Message
    ↓
Chunk Header (1-18 bytes)
    ├── Basic Header (1-3 bytes)
    ├── Message Header (0-11 bytes) 
    └── Extended Timestamp (0-4 bytes)
    ↓
Chunk Data (≤ Chunk Size)

3. 스트리밍 파이프라인

Video Source (Camera)
    ↓
Video Encoder (H.264)
    ↓
Audio Source (Microphone)
    ↓
Audio Encoder (AAC)
    ↓
RTMP Packager
    ↓
TCP Socket
    ↓
RTMP Server (Nginx-RTMP, SRS, Wowza)
    ↓
HTTP-FLV/HLS/DASH 변환
    ↓
CDN Distribution
    ↓
Player (VLC, JW Player, Video.js)

RTMP 장점

✓ 안정적인 스트리밍 (TCP 기반)
✓ 대규모 시청자 지원 (1:N 브로드캐스팅)
✓ 성숙한 생태계 (다양한 서버/도구)
✓ CDN 연동 용이
✓ 녹화 및 저장 기능
✓ 안정적인 품질 유지
✓ 네트워크 적응성 우수

RTMP 단점

✗ 높은 지연시간 (2-10초)
✗ Flash Player 의존성 (브라우저 지원 종료)
✗ 서버 인프라 비용
✗ 단방향 통신 (Publisher → Viewer)
✗ 실시간 상호작용 제한
✗ 모바일 브라우저 지원 부족

성능 비교표

항목 WebRTC RTMP
지연시간 20-150ms 2-10초
확장성 제한적 (P2P) 우수 (서버 기반)
브라우저 지원 네이티브 Flash 필요
서버 부하 낮음 높음
구현 복잡도 높음 중간
비용 TURN 서버 스트리밍 서버
보안 내장 암호화 추가 구현 필요

실제 사용사례

WebRTC 최적 사용사례

1. 화상회의 시스템

예시: Zoom, Google Meet, Discord
- 1:1 또는 소규모 그룹 통화
- 실시간 상호작용 필수
- 초저지연 요구사항
- 양방향 오디오/비디오

2. 실시간 게임

예시: 브라우저 기반 멀티플레이어 게임
- P2P 데이터 채널 활용
- 실시간 동기화
- 낮은 네트워크 지연 중요

3. 원격 데스크톱/제어

예시: TeamViewer, Chrome Remote Desktop
- 실시간 화면 공유
- 마우스/키보드 제어
- 즉시 반응성 필요

4. 라이브 헬프데스크

예시: 고객 지원 화상 상담
- 1:1 실시간 상담
- 화면 공유 기능
- 브라우저 접근성

RTMP 최적 사용사례

1. 라이브 스트리밍 플랫폼

예시: Twitch, YouTube Live, 아프리카TV
- 1:多 브로드캐스팅
- 수천 명의 동시 시청자
- 안정적인 스트리밍 품질
- 녹화 및 다시보기 기능

2. 교육 플랫폼

예시: 온라인 강의, 웨비나
- 강사 1명 → 수백명 학생
- 장시간 안정적 스트리밍
- 녹화된 강의 제공
- 채팅 상호작용

3. 기업 라이브 이벤트

예시: 제품 발표회, 컨퍼런스
- 대규모 시청자
- 전문적인 방송 품질
- 다중 카메라 스위칭
- CDN을 통한 글로벌 배포

4. 감시/보안 시스템

예시: CCTV 원격 모니터링
- 24/7 연속 스트리밍
- 안정성 최우선
- 녹화 및 저장
- 다중 채널 관리

하이브리드 아키텍처 사례

YouTube Live의 경우

OBS/스트리머 → RTMP → YouTube 서버 → 
    ↓
HLS/DASH → CDN → 시청자 (지연: 10-30초)
    ↓
WebRTC → 실시간 채팅/슈퍼챗 (지연: <1초)

Facebook Live의 경우

모바일 앱 → RTMP → Facebook 서버 → 
    ↓
HTTP Progressive → 시청자 (지연: 3-8초)
    ↓
WebRTC → 실시간 반응/댓글 (지연: <1초)

선택 가이드

WebRTC를 선택해야 하는 경우

  • 실시간 상호작용이 핵심 (화상회의, 게임)
  • 지연시간이 1초 미만이어야 함
  • P2P 통신으로 서버 비용 절약
  • 소규모 참여자 (2-50명)
  • 브라우저 기반 서비스

RTMP를 선택해야 하는 경우

  • 대규모 시청자 대상 (100명+)
  • 방송/스트리밍이 주 목적
  • 안정적인 품질이 중요
  • 녹화/저장 기능 필요
  • 기존 스트리밍 인프라 활용

최신 트렌드: WebRTC + RTMP 조합

실시간 상호작용: WebRTC (채팅, 반응)
    +
메인 스트림: RTMP → HLS/DASH (영상)

기술적 구현 고려사항

WebRTC 구현 시 주의점

  • STUN/TURN 서버 설정 필요
  • 시그널링 서버 구현 복잡
  • 브라우저별 호환성 테스트 중요
  • 네트워크 품질에 따른 적응형 비트레이트 구현

RTMP 구현 시 주의점

  • Flash 대체 기술 (HLS/DASH) 병행 필요
  • CDN 연동 및 부하 분산 고려
  • 다양한 해상도/비트레이트 제공
  • 모바일 브라우저 지원을 위한 추가 프로토콜 필요

결론 및 권장사항

WebRTC vs RTMP 핵심 차이점:

  • 목적: WebRTC (실시간 통신) vs RTMP (스트리밍 방송)
  • 지연시간: WebRTC (초저지연) vs RTMP (버퍼링된 안정성)
  • 확장성: WebRTC (소규모 P2P) vs RTMP (대규모 1:N)
  • 상호작용: WebRTC (양방향) vs RTMP (단방향)

미래 전망:

  • WebRTC: 실시간 협업, 메타버스, IoT 분야로 확장
  • RTMP: HLS/DASH로 대체되는 추세, 하지만 스트리밍 인제스트에서는 여전히 표준
  • 하이브리드 접근법이 주류로 자리잡을 전망

최종 권장사항:
프로젝트의 핵심 요구사항(지연시간 vs 확장성)을 명확히 하여 적절한 기술을 선택하는 것이 중요합니다. 많은 현대적인 플랫폼들이 두 기술의 장점을 결합한 하이브리드 접근법을 채택하고 있다는 점도 고려해보시기 바랍니다.