RTMP vs HLS, 내게 적합한 유튜브 라이브 스트리밍 방식은?
유튜브 라이브 스트리밍에 RTMP와 HLS중 내게 적합한 프로토콜을 선택하는 방법. 두 송출 방식의 차이점, 지연시간, 안정성등을 비교해 내 콘텐츠에 가장 적합한 방식을 선택하는 방법을 제공합니다.
라이브 동영상 스트림을 전송하기 위해 사용되는 프로토콜은 여러가지가 있으나, 그중 RTMP(Real Time Messaging Protocol)와 HLS(HTTP Live Streaming) 정도가 널리 사용되고 있다.
RTMP는 오랜 기간 동안 사용되어 왔으며, 대부분의 동영상 플랫폼에서 라이브 스트리밍 연동의 표준 방식으로 사용되고 있다. 또한, HLS의 경우에도 유튜브를 비롯해서 지원하는 플랫폼들이 생겨나고 있다.
프로토콜이 다르면 스트림 데이터를 전송하는 방법이 다르다는 의미이고, 이 차이는 라이브 스트리밍 방송에 큰 영향을 미치게 된다. 본 글에서는 두 프로토콜의 전송 방법의 차이와 이로 인한 특성에 대해 알아보고, 이를 바탕으로 독자 제위께서 안정적인 라이브 스트리밍 서비스를 구현하기 위해 내 상황에 적합한 스트리밍 프로토콜을 선택하는데 도움이 되고자 한다.
RTMP와 HLS의 차이 – 연속 vs 단속
두 프로토콜 모두 동영상 스트림을 끊임없이 전송하고 재생하기 위한 방법이지만, 그 전송방식에는 많은 차이가 있다. 가장 핵심적인 차이는 아래의 그림을 보면 쉽게 알 수 있다.

위의 그래프는 동일한 MPEG2-TS UDP 스트림을 와우자 스트리밍 엔진을 통해 RTMP 와 HLS 형식으로 변경한 후, 이를 재생할 때의 네트워크 전송률 그래프로, 왼쪽의 그래프는 RTMP, 오른쪽의 그래프는 HLS의 전송 그래프이다.
그래프를 보면 한눈에 봐도 그 형태가 매우 다른 것을 알 수 있는데, 왼쪽의 RTMP 그래프에서는 약 5Mbps 네트워크 트래픽이 끊임없이 연속적으로 발생하고 있음을 알 수 있다. 반대로 오른쪽의 HLS 그래프에서는 10초의 간격을 두고 약 50Mbps 정도의 트래픽이 발생했다가 멈췄다가를 반복하고 있다.
RTMP는 인코더에서 받은 데이터를 실시간으로 끊임 없이 전송한다. 라디오 방송국에서 전파를 통해 실시간으로 송출한 방송신호를, 라디오를 통해 실시간으로 듣는 것과 같은 개념으로, 전통적인 방송의 개념과 유사한 개념으로 생각하면 되겠다.
HLS는 인코더에서 받은 데이터를 일정 시간동안 모아 만든 동영상 파일을 반복적으로 전송한다. 동영상 플레이어에서, 지금 재생하는 10초짜리 동영상 파일의 끝에 도달하기 전에 다음 10초짜리 동영상 파일을 재생목록에 추가시키면, 영상은 멈추지 않고 다음 동영상 파일을 이어서 재생할 것이다. 이를 계속 반복하면 결국 영상은 멈추지 않고 계속 재생이 가능하게 된다는 개념이다.
정리하자면, RTMP와 HLS의 전송 방식의 차이는 다음과 같이 정의할 수 있겠다.
- RTMP
- 동영상 데이터를 끊김 없이 연속적으로 전송한다.
- 실시간 전화통화나 라디오방송과 유사한 개념이다.
- HLS
- 동영상 데이터를 일정 간격으로 잘라 동영상 파일을 만들어 업로드 한다.
- 동영상 파일을 계속 이어서 재생한다. 이어달리기와 유사한 개념이다.
RTMP와 HLS의 차이가 만드는 특성 – 지연 vs 안정성
위에서 보았듯이, RTMP 전송과 HLS 전송의 가장 큰 차이점은 연속 전송이냐 단속 전송이냐의 차이이다. 그리고 이 차이는 라이브 스트림을 재생하는데에 있어 고유한 특성을 만들게 된다.
HLS의 동작은 일정 시간 동안 스트림 데이터를 모아서 동영상 파일로 변환한 다음, 동영상 파일을 전송하는 방법이라 말했다. 즉, 스트림 데이터를 모아 동영상 파일로 만드는 시간이 필요하게 된다. 만약 업로드할 동영상의 길이를 10초로 설정했다면, 최소한 10초가 지난 다음 전송이 이루어 진다는 의미이며, 이는 최소한 10초 이상의 지연시간이 발생한다는 의미가 된다. 이렇게 잘게 잘려진 동영상 조각을 청크(Chunk)라고 부른다.
RTMP의 동작은 인코더의 데이터를 실시간으로 끊임 없이 전송하는 방법이라 말했다. 끊임 없이 실시간으로 전송한다는 의미는, ①정확한 시간에 ②정확한 순서대로 ③온전한 데이터가 전달되어야 한다는 의미이다. 만약 어떠한 이유로 데이터 전송에 문제가 생겨 셋 중 하나에라도 문제가 발생한다면, 영상 재생에 문제가 발생한다.
정리하자면, RTMP와 HLS전송에는 다음과 같은 특성 차이가 있다.
- RTMP
- 전송 지연 시간이 상대적으로 적음
- 전송 회선의 품질에 영향을 받음
- HLS
- 청크 생성을 위한 추가적인 지연시간이 발생
- 전송 회선의 품질에 상대적으로 영향을 적게 받음
RTMP vs HLS – 내게 적합한 유튜브 라이브 스트리밍 방식은?
위에서 보았듯이, RTMP와 HLS는 각각의 전송 특성이 다르며, 각각의 장단점이 서로 다르다. 이를 바탕으로 라이브 스트리밍 콘텐츠에 적합한 프로토콜을 어떻게 선택할 수 있을까?
시청자와 소통하며 즉각적으로 반응해야 하는가? : RTMP
게임 방송과 같이 시청자와 실시간 소통하며 진행하는 콘텐츠로 라이브 스트리밍을 진행한다면, 지연시간이 적은 RTMP를 사용하는 것이 더 유리하다. HLS를 이용할 경우, 유튜브에서 권장하는 최소 청크값인 2초를 적용한다 하더라도, 시청자에게 반응하기 까지 시간은 기본 4초 이상이 필요하다. 여기에 유튜브 내부의 트랜스코딩 시간과 전송시간을 감안하면 이 시간은 더 늘어나게 된다. 과도한 지연은 실시간 소통 경험에 좋지 않은 영향을 미치게 된다.
지연시간이 중요한 요소인가? : RTMP
스포츠 이벤트 생중계나 중대 발표와 같이, 결과가 중요해서 스포일러 문제 (축구경기를 지상파로 시청하던 옆집의 함성소리가 우리집 TV의 골 장면보다 먼저 터져나오는)가 발생할 수 있는 콘텐츠로 라이브 스트리밍을 진행한다면, 지연 시간이 적은 RTMP를 사용하는 것이 더 유리하다.
장시간(3시간 이상) 방송인가? : HLS
3시간 정도면 라이브 스트리밍을 시작할 때에 비해 네트워크 환경이 달라지기에 충분한 시간이다. (사실, 분 단위로 바뀌기도 한다.) RTMP로 방송을 진행할 경우, 처음에는 원활했던 방송이 네트워크의 상황에 따라 불안정하게 바뀔 수 있다. 때문에 안정적인 스트리밍을 유지하기 위해서 네트워크 환경에 영향을 덜 받는 HLS를 사용하는 것이 더 유리하다.
무선 네트워크를 사용하거나, 네트워크 품질이 불안정한가? : HLS
RTMP는 전송과정에서 단 하나의 오류가 발생하더라도 재생에 문제가 생긴다. 반면, HLS는 순간적인 전송 오류가 발생하더라도, 시간 안에 데이터가 전달되기만 한다면 끊임 없는 재생이 가능하다. 때문에 와이파이 무선 네트워크를 사용하거나, 유선 인터넷이라 하더라도 네트워크 품질이 좋지 않다면 HLS 를 사용하는 것이 유리하다.
필자의 추천 : HLS
인터넷 환경이란 것은 생각보다 불안정 하다. 국내 플랫폼이라면 해외망을 타고 나가지 않기 때문에 그나마 나으나, 유튜브의 경우 해외망을 타고 밖으로 나가야 한다. 국내에서 해외와 연동되는 용량에는 한계가 있고, 길고 긴 해저 광 케이블은 환경의 영향을 받는다. 아니, 당장 우리동네에 비바람이 치는 것 만으로도, 인터넷 품질이 달라지는 것을 독자 제위께서는 경험하신 바 있을 것이다.
위의 동영상은 동일한 라이브 스트림 소스를 동일한 서버에서 동일한 경로를 통해 유튜브로 송출하는 모습이다. 왼쪽의 RTMP의 경우 끊김이 계속 발생하고 있지만, 오른쪽의 HLS의 경우 안정적으로 재생되고 있음을 확인할 수 있다.
이러한 이유로 본 필자는 유튜브 라이브 스트리밍에 기본적으로 HLS 를 사용할 것을 권장하는 바이다.
요약과 FAQ
- OBS에서 HLS 송출이 가능한가?
- 가능하다. 유튜브의 경우 RTMP뿐 아니라 HLS도 선택할 수 있다.
- 네트워크가 불안정 하다면 RTMP와 HLS 모두 영향을 받아야 하는 것 아닌가?
- RTMP는 ①정확한 시간에 ②정확한 순서대로 ③온전한 데이터가 전달되어야 한다. 하지만, HLS는 시간 안에 청크파일이 전송되기만 하면 된다. 즉, 전송 중간에 문제가 생기더라도 다시 전송을 시도해 시간 안에만 청크파일을 업로드해주면 되기 때문에 네트워크가 흔들리더라도 연속적인 재생이 가능하다. 예를들어 10초짜리 청크파일 하나의 크기가 6MByte라고 하면, 1Gbps급 회선을 사용할 경우, 이론상 최소 200회 재전송의 기회가 있다. 반면, RTMP는 이러한 재전송이 불가능하다.
- HLS와 RTMP중 안정성이 높은 전송방식은?
- HLS이다. RTMP는 전송 네트워크의 영향을 많이 받는다.
- 10Gbps 광랜 상품을 쓰면 회선이 안정적이지 않은가?
- 대역폭과 안정성은 별개의 문제이다. 10Gbps 광랜이 조금 더 안정적으로 동작할 가능성은 있으나 절대적이지 않으며, 특히 유튜브의 경우에는 해외 연동망에서 문제가 생길 수 있기 때문에 국내 접속 속도에 큰 영향을 받지 않는다.
- HLS의 지연시간을 줄이는 방법은 없는가?
- 전통적인 HLS 전송 방식에서 필요수적으로 생기는 지연시간을 줄인 LLHLS (Low Latency HLS) 라는 규격이 존재한다. 지연 시간을 1초 이내로까지 줄일 수 있다.
- 전송 지연은 방송에만 영향을 미치는가?
- 전송지연이 누적될 경우, 아직 전송되지 않은 데이터가 서버의 메모리에 누적되게 되며 결국 서버가 다운되게 된다.