ETC

HLS - Http Live Streaming

iksadnorth 2023. 12. 30. 15:11

👣 Reference

https://www.cloudflare.com/ko-kr/learning/video/what-is-http-live-streaming

 

 

HTTP 라이브 스트리밍이란? (HLS)

HTTP 라이브 스트리밍이란 HTTP를 전송 채널로 하는 라이브 스트리밍 프로토콜이다. 💡 라이브 스트리밍실시간으로 영상물을 재생하는 것HLS에서는 m3u8과 ts를 사용한다. m3u8은 영상 재생을 위한

velog.io

 

👣 개요

동영상 파일의 경우, 대부분 큰 용량을 가지고 있어 일부분을 확인하기 위해 전체 파일을 요구하는 것은 낭비이다.

때문에 사용자가 동영상을 요구할 때, 하나의 파일 통짜로 주는 것이 아니라 원하는 시간대의, 원하는 화질의 파일을 건네주면 된다. 

이런 작업을 수행하기 위해 여러가지 프로토콜이 존재하고 그 중 하나가 HLS다.

 

👣 특징

👣 HLS는 HTTP 프로토콜을 사용한다.

HLS는 이름에서 알 수 있듯 HTTP 프로토콜을 사용한다.

특정 Port에서의 통신을 요구하는 것이 아니기 때문에 인터넷이 연결된 기기에서는 쉽게 호환이 가능하고 추가적인 방화벽 설정을 요구하지 않는다.

 

👣 HLS는 네트워크 상태에 따라 비디오 품질을 높이거나 낮출 수 있다.

동영상을 재생할 때, 네트워크 상태에 따라 1080p에서 720p로 자동으로 바뀌는 경험을 해본 적이 있을 것이다.

이 때, 영상이 끊기지 않고 자연스럽게 720p로 다운그레이드 되는 현상을 볼 수 있는데, HLS는 네트워크 상황을 파악해 영상 품질을 줄이거나 늘리는 기능을 제공한다.

 

👣 HLS는 UDP가 아닌 TCP를 사용한다.

UDP는 데이터 전송 속도가 매우 빠르기 때문에 실시간 스트리밍에 효과적이다.하지만 HLS는 TCP를 사용하는데 HTTP를 사용하기 때문에 기본적으로 TCP 프로토콜을 사용한다.뿐만 아니라 형대의 인터넷은 충분한 대역폭을 가지고 있고 Adaptive Bitrate Streaming를 제공하기 때문에 네트워크 상황에 대해 이미 유연하게 대처할 수 있기 때문이다.

 

 

👣 작동 원리

👣 인코딩

영상 파일을 압축시켜 용량을 줄이는 것.

영상 원본을 그대로 전송하게 되면 실시간 스트리밍을 아예 꿈도 못꾸며, 전송 속도가 너무 느리다.

때문에 영상을 압축해서 전송하게 된다. 

대표적인 압축 기술은 H.264와 H.265가 있으며, 해당 방식은 손실 압축 표준으로 화면이 때에 따라 뭉개질 수도 있다.

 

👣 조각화

전체 영상을 한번에 전송하는 것이 아닌 여러 조각으로 나눠놓은 후, 사용자가 요구하는 구간의 파일만 전송한다.

HLS는 6초 단위로 영상을 잘라낸다.

원본 파일을 전부 조각화하면, 2가지의 파일로 나눠서 저장된다.

하나는 m3u8 파일이고 다른 하나는 ts 파일이다.

m3u8 파일은 다시 2가지로 나뉠 수 있는데 하나는 Master Playlist, 다른 하나는 Media Playlist라고 불린다.

Master Playlist는 네트워크 품질에 따라 재생할 수 있는 Media playlist 목록이 적혀 있고 상황에 맞게 고/저품질의 영상을 재생한다. 예시는 아래와 같다.

Media Playlist는 시간대에 따른 ts 파일 목록이 적혀 있고 요구하는 시간대의 영상 파일[ts 파일]을 제공한다. 예시는 아래와 같다.