-
라이브 스트리밍 프로토콜 비교(RTMP vs HLS vs WebRTC)프로젝트/WebRTC 화상통화 프로젝트 2022. 7. 1. 18:41
스트리밍 프로토콜이란?
라이브 스트리밍 기술을 비약적인 발전을 이루어냈으며 덕분에 기술 지식이 거의 없어도 고품질 스트림을 제작할 수 있습니다.
실시간으로 인터넷을 통해 비디오 파일을 전달하기 위해 뒤에서 작동하는 가장 중요한 것은 스트리밍 프로토콜입니다.
비디오 파일은 부피가 크기 때문에 전송하기 위해서는 분할하는 과정이 필요합니다.
스트리밍 프로토콜은 비디오를 chunks로 분할하고 재조립하는 데 사용하는 표준화된 방법을 뜻합니다.
고유한 목적을 제공하기위해 다양한 조직에서 프로토콜들을 개발하였고 일반적으로 표준화된 오픈소스이므로 다양한 기술 및 스트리밍 설정과 원활하게 사용할 수 있습니다.
스트리밍을 구현하기 위해 유명한 세가지 프로토콜이 존재합니다.
바로 RTMP, HLS, WebRTC입니다.
RTMP란?
Real-Time Messaging Protocol(RTMP)의 약자로 Adobe의 Flash 플레이어에 비디오 콘텐츠를 전달하는 데 사용되었던 스프리밍 프로토콜입니다.
대기 시간이 짧은 스트리밍 기능이 특징입니다.
저지연 스트리밍이 가능하며 많은 무료 인코딩 소프트웨어를 포함하여 대부분의 최신 인코더와 함께 동작하기 때문에 접근성이 좋습니다.
하지만 RTMP는 HTML5를 비롯한 최신 비디오 플레이어와 호환되지 않기 때문에 스트리밍 설정에서 더 이상 전송에 사용되지 않습니다.
HLS란?
Https Live Streaming(HLS)의 약자로 HTML5 비디오 플레이어로 스트리밍하기 위해 Apple에서 개발한 프로토콜입니다.
HTML5 비디오 플레이어가 보편적으로 호환되는 유일한 프로토콜이기 때문에 대부분의 최신 스트리밍 설정에서 절대적으로 필요합니다.
안전하고 고품질 스트리밍을 생성하는것이 특징이며 거의 모든 인터넷 지원 장치로 스트리밍 할 수 있는 탁월한 호환성을 가집니다.
HLS는 스트리밍 전달과 수집에 모두 사용할 수 있디만 현재 대부분의 인코더와 널리 호환되고 있지 않기 때문에 전달 쪽으로 사용합니다.
이렇게 전달/수집을 나누어서 하기 때문에 단점중 하나로 단독으로 사용할 경우 15-30초의 대기 시간이 발생합니다.
이것은 P2P 상호 작용, 회의 등과 관련된 많은 응용 프로그램에서 절대적으로 금지됩니다.
WebRTC란?
Web Real-Time Communication(WebRTC)의 약자로 웹 회의 및 VoIP를 지원하기 위해 만들어진 스트리밍 프로젝트로 Google에서 구입하여 추가로 개발되었습니다.
저지연의 peer-to-peer 스트리밍이 가능합니다.
오픈소스 프로젝트로 개발자가 WebRTC를 사용하여 소프트웨어에 스트리밍을 통합할 수 있도록 합니다.
현재 WebRTC는 구글 밋, Slack, Discord와 같은 화상 회의 기능이 있는 곳에서 사용됩니다.
SRTP(실시간 전송 보안 프로토콜) 및 기타 표준 보안 조치로 암호화되어 매우 안접합니다.
또한 커스터마이징 하기 용이하고 대부분의 브라우저 및 장치 유형으로 스트리밍 할 수 있습니다.
HLS와 더불어 Adaptive bitrate streaming을 적용합니다.
ABR이란?
Adaptive bitrate streaming의 약자로 비디오 플레이어 클라이언트가 다운로드할 비트 전송률 세그먼트를 결정하는 알고리즘입니다.
즉, 사용자의 인터넷 연결과 장치의 처리 용량을 감지하여 실시간으로 비트 전송률을 증가시키거나 감소시켜서 시청자에게 최상의 비디오 경험을 제공합니다.
RTMP vs HLS vs WebRTC 비교
공통점으로는 실시간에 가까운 데이터를 전송하는데 도움이 되는 프로토콜입니다.
라이브 스트리밍에 가장 적합한 기술을 무엇일까요?
상황에 따라 다르겠지만 현재 RTMP 수집을 통해 HLS로 전달하는 조합은 많은 스트리밍 설정에서 사용됩니다.
반면 WebRTC 또한 점점 더 대중화되고 있지만 인코더에서 널리 지원되지 않는 단점이 있습니다.
만약 웹캠을 사용하여 비디오를 캡처하는 P2P 스트리밍에서는 해당 단점이 간과될 수 있지만 전문가 수준의 방송에는 주요 문제가 될 수 있습니다.
따라서 전문적인 방송 분야에서는 RTMP + HLS 조합이 사용됩니다.
표 정리
RTMP HLS WebRTC 지연시간 2-5 초 20-30 초 <500 miliseconds 규묘 Limited due to persistent server-client connections. Needs special RTMP proxy to scale 수백만 명의 시청자 만명 이하의 시청자 품질 ABR을 사용하지 않음 ABR 사용 ABR 사용 호환 flash의 쇠퇴로 인해 존재하지 않음 모든 HTML5 플레이어와 호환 대부분의 최신 브라우저, IOS 및 안드로이드에서 지원 결론
유명한 3가지 프로토콜에 대해서 분석하여 보았습니다.
화상회의 소프트웨어를 만드는 것이 목적이기 때문에 가장 적절한 기술인 WebRTC 프로토콜을 선택하여 개발하는 것이 좋아 보입니다.
규모도 만 명 이하의 시청자면 충분할 것 같고, ABR을 사용하는 품질의 장점, 호환성도 좋으며 500ms 저 지연성이 장점입니다.
출처
https://www.dacast.com/blog/rtmp-vs-hls-vs-webrtc/
https://www.dacast.com/blog/adaptive-bitrate-streaming/
https://www.100ms.live/blog/rtmp-vs-webrtc-vs-hls-live-streaming-protocols
https://dvnest.com/user_20210809/
'프로젝트 > WebRTC 화상통화 프로젝트' 카테고리의 다른 글
OpenVidu REST API 공식문서 분석 (0) 2022.07.11 OpenVidu 배포하기 (3) 2022.07.10 OpenVidu 공식문서로 시작해보기 (0) 2022.07.09 WebRTC 쿠렌토(Kurento)란? (0) 2022.07.04 WebRTC란? (+P2P, SFU, MCU 동작과정) (0) 2022.07.02