RTMP 와 WebRTC 비교

highway92·2022년 1월 10일
1

라이브스트리밍

목록 보기
2/2

라이브 비디오 스트리밍은 최근 가장 대중적인 기술이 되어가고 있다. 특히나 코로나 시대가 창궐하면서 많은 비지니스들이 그들의 직원이나 일반 사용자들에게 원격으로 일할 수 있는 솔루션을 제공하고자 한다. 많은 사람들이 Zoom과 같은 쓰기 쉬운 솔루션들을 사용하지만, 많은 회사들은 자신들만의 스트리밍 앱을 만드려 한다.

이 글에서는 가장 유명한 비디오 스트리밍 프로토콜인 RTMP와 WebRTC에 대해 알아보고 더 나은 선택을 할 수 있게 하고자 한다.

Video Streaming Protocol

비디오 스트리밍 기술 기반을 형성하는 많은 요소가 있으며 대표적으로는 데이터 암호화 스택, 오디오/비디오 코덱, 전송 프로토콜 등이 있다. 그중 스트리밍 프로토콜은 소스에서 오디오/비디오 데이터를 전달하는 역할을 하게 된다. 물론 HTTP 웹 프로토콜을 통해서도 전송 할 수 있지만 보다 빠르고 안정적인 데이터 스트리밍을 위해 RTMP와 같은 프로토콜이 만들어졌다.

RTMP (Real-Time Messaging Protocol)

RTMP의 과거는 나무위키를 참고해라. 이 기술은 20년 이상 되었으며 널리 채택되어 많은 소프트웨어에 사용되었다. (예를들면 youtube)

WebRTC

웹 RTC는 최근 몇년 동안 인기를 얻기 시작한 신흥 기술입니다. RTMP와 달리 WebRTC는 프로토콜 그 이상입니다. 이 기술은 웹 브라우저와 모바일 애플리케이션 간의 실시간 통신(RTC)에 사용되는 API(응용 프로그래밍 인터페이스)뿐만 아니라 전송 프로토콜을 다룹니다. WebRTC는 W3C 표준이므로 최신 브라우저에서 널리 지원되며 오디오 및 비디오 데이터를 웹 페이지 간에 직접 전송할 수 있습니다.

other protocols

Apple의 HLS 프로토콜, Adobe의 MPEG-DASH, HDS 등 수년에 걸쳐 개발된 다른 비디오 스트리밍 프로토콜이 많이 있습니다. 이러한 프로토콜의 대부분은 공급업체에 따라 다르거나 인터넷에서 널리 사용되지 않기 때문에 이 글에서는 RTMP 및 WebRTC의 두 가지 프로토콜에 중점을 둘 것입니다.

Latency

RTMP는 TCP(Transmission Control Protocol)를 기반으로 하며 전송을 보장하며 주어진 순서로 데이터를 전송할 수 있습니다. 더 안정적인 네트워크 연결을 사용하더라도 대기 시간은 종종 네트워크 설정에 따라 0.5초 이상입니다. 반면 WebRTC는 UCP를 기반으로 하며 0.1초 미만의 실시간에 가까운 레이턴시를 제공합니다. 따라서 WebRTC는 양방향 회의 또는 실시간 장치 제어에 더 적합합니다.

Scalability

확장성 측면에서 RTMP는 수천 또는 수백만 명의 청중에게 라이브 스트리밍을 제공하도록 확장될 수 있습니다. 대조적으로 WebRTC는 일반적으로 천 한도 내에서 더 적은 수의 청중에게 라이브 스트리밍을 제공하는 데 자주 사용됩니다. 그러나 일부 사람들은 WebRTC의 P2P 특성이 제대로 구현된다면 확장성 문제를 일으키지 않을 것이라고 주장합니다. 그러나 확장에 관해서는 RTMP가 확실히 선두를 달리고 있습니다. 수천 명의 시청자에게 라이브 스트리밍이 필요한 사용 사례의 경우 RTMP가 더 나은 선택입니다.

Encoder/Player and Browser Support

RTMP의 광범위한 채택으로 인해 대부분의 인코더 소프트웨어 및 비디오 플레이어에서 지원됩니다. 그러나 Flash 플레이어의 라이브 종료로 인해 최신 브라우저에서 지원을 잃기 시작했습니다. 반면 WebRTC는 HTML5에 내장된 API 지원으로 최신 브라우저에서 더 잘 지원되며 소프트웨어나 플러그인을 설치하지 않고도 대부분의 최신 브라우저에서 재생할 수 있습니다. 인코더 또는 비디오 플레이어 지원 측면에서 많은 소프트웨어 공급업체가 WebRTC의 인기를 인식하고 지원 목록에 WebRTC를 추가하기 시작했습니다.

Cloud Support

AWS나 Alibaba Cloud와 같은 대부분의 클라우드 제공업체에는 RTMP와 직접 통합할 수 있는 비디오 스트리밍 서비스가 있습니다. 예를 들어 Alibaba Cloud에는 RTMP와 호환되는 ApsaraVideo Live라는 서비스가 있습니다. 반대로 WebRTC를 사용하여 비디오 스트리밍을 실행하려면 Jitsi Meet과 같은 온-프라미스 스트리밍 서버를 클라우드에 설치해야 합니다.

API Support

개발과 관련하여 API 지원은 기술 선택의 핵심 요소입니다. WebRTC는 API 지원에 앞장서고 있습니다. 대부분의 최신 브라우저에는 WebRTC와 통합된 기본 API가 있으며 Javascript를 사용하여 직접 호출할 수 있기 때문입니다. 반면에 RTMP를 사용하려면 오픈 소스 라이브러리를 활용하거나 OBS와 같은 기존 소프트웨어 솔루션을 사용해야 합니다.

결론

요약하면 RTMP와 WebRTC는 모두 자체 비디오 스트리밍 솔루션을 구축하는 데 사용할 수 있는 인기 있는 기술입니다. RTMP는 비디오 플레이어 및 클라우드 공급업체 통합 측면에서 더 나은 지원을 제공합니다. 반면 WebRTC는 실시간에 가까운 대기 시간으로 더 빠른 스트리밍 경험을 제공하며 대부분의 최신 브라우저에서 기본적으로 지원하므로 Javascript와 같은 웹 개발 기술을 가진 사람들이 작업하기가 더 쉽습니다. 기술마다 장단점이 있기 때문에 유스케이스, 개발노력/타임라인, 인력의 능력에 따라 혼용하여 선택할 수 있습니다.

표로 보는 비교

RTMPWebRTC
Latency안정적인 전송, 조금 느림(0.5초 이상)UDP 기반 거의 실시간
Scalability확장성 good(수백만까지 커버)주로 1,000단위의 사람 수 까지 가능
Encoder/Player and Browser Support대부분 소프트웨어에서 사용되나 Flash가 없어지면서 최신 브라우저에서 지원을 잃음HTML5에 내장된 API지원으로 최신브라우저에서 재생가능
Cloud Support대부분 클라우드에 RTMP와 직접 통합 할 수 있는 비디오 스트리밍 서비스가 있음그런거 없음 쓰려면 온-프라미스 스트리밍 서버를 클라우드에 설치해서 사용
API Support오픈 소스 라이브러리를 활용하거나 OBS와 같은 소프트웨어 솔루션 사용Javascript를 사용하여 직접 호출(최신브라우저에 대부분 내장되어 있음)
profile
웹 개발자로 활동하고 있습니다.

0개의 댓글