HTTP 라이브 스트리밍
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
HTTP 라이브 스트리밍(HLS)은 기존 웹 서버를 사용하여 시청각 콘텐츠를 배포하는 기술로, OBS Studio와 같은 소프트웨어를 통해 실시간으로 전송할 수 있도록 코덱으로 변환해야 한다. 서버는 비디오를 코딩하고 조각내어 배포하고, 배포자는 웹 서버 역할을 하며, 클라이언트는 파일을 요청하고 조립하여 시청한다. HLS는 네트워크 대역폭 변화에 맞춰 영상 품질을 조절하는 적응형 스트리밍, 조각난 MP4 파일 사용, 저지연 HLS 등의 기능을 제공한다. 2016년 애플은 조각난 MP4 파일에 대한 바이트 범위 지정을 지원하여 HLS와 MPEG-DASH 간의 호환성을 높였다. 다양한 서버 구현과 클라이언트, 그리고 윈도우, macOS, iOS, 안드로이드 등 여러 운영체제에서 지원된다. 또한 동적 광고 삽입 기능도 제공한다.
더 읽어볼만한 페이지
- 퀵타임 - 애플 ProRes
애플 ProRes는 애플이 개발한 전문 비디오 코덱으로, 고화질 영상 편집 워크플로우에 널리 사용되며, 실시간 편집과 색 보정 작업에 뛰어난 성능을 제공하고, ProRes 422, ProRes 4444, ProRes RAW 등 여러 종류가 있다. - 퀵타임 - 애플 무손실
애플에서 개발한 무손실 오디오 코덱인 애플 무손실(ALAC)은 .m4a 확장자를 가진 MP4 컨테이너 포맷으로 저장되며 최대 8채널 오디오와 384kHz의 샘플 속도를 지원하고 2011년 오픈 소스화되어 2021년 애플 뮤직의 무손실 음원 서비스에 사용되며 주목받았다. - 멀티미디어 - 인터넷 텔레비전
인터넷 텔레비전은 인터넷 프로토콜을 이용하여 텔레비전 콘텐츠를 제공하는 서비스로, 기술 발전에 따라 스트리밍 방식과 접근성이 발전해왔으며, 온라인 비디오 플랫폼의 성장과 함께 빠르게 성장하여 현재는 다양한 기기를 통해 시청이 가능하다. - 멀티미디어 - 미디어 플레이어
미디어 플레이어는 컴퓨터에서 오디오나 비디오와 같은 미디어 파일을 재생하는 소프트웨어나 하드웨어로, 디지털 기술 발전에 따라 다양한 형태로 발전해 왔으며 운영 체제, 지원 파일 형식 등으로 분류되고, 대한민국에서는 팟플레이어, 곰플레이어 등의 국산 미디어 플레이어가 널리 쓰인다. - HTTP - HTTPS
HTTPS는 HTTP에 보안 기능이 더해진 통신 규약으로, 웹 브라우저와 서버 간 통신을 암호화하여 보안을 강화하지만, 인증서 비용, 서버 부하, 혼합 콘텐츠 문제 등의 단점도 존재한다. - HTTP - HTTP 쿠키
HTTP 쿠키는 웹 서버가 사용자 브라우저에 저장하는 작은 텍스트 파일로, 웹 사이트가 방문 기록, 로그인 정보 등을 기억하여 HTTP의 상태 비저장성을 보완하고 세션 관리, 개인 설정, 사용자 추적 등에 활용되지만 개인 정보 보호 및 보안 문제에 대한 논란이 있다.
HTTP 라이브 스트리밍 - [IT 관련 정보]에 관한 문서 | |
---|---|
개요 | |
종류 | 스트리밍 통신 프로토콜 |
개발 | 애플 |
최초 배포 | 2009년 5월 |
파일 확장자 | .m3u8 |
MIME 형식 | application/vnd.apple.mpegurl 또는 audio/mpegurl |
확장 | 확장 M3U |
상세 정보 | |
설명 | HTTP 라이브 스트리밍(HLS)은 애플이 만든 HTTP 기반의 스트리밍 통신 프로토콜이다. |
특징 | 플레이리스트 파일을 사용 적응형 비트레이트 스트리밍 지원 |
기술 정보 | |
표준 | IETF RFC 8216 |
2. 아키텍처
HTTP 라이브 스트리밍(HLS)은 OBS와 같은 소프트웨어를 사용하여 콘텐츠를 네트워크를 통해 실시간으로 전송하기 위한 적절한 형식(코덱)으로 변환하고, HLS를 지원하는 기존의 웹 서버를 사용하여 시청각 콘텐츠를 배포하는 기술이다.
HLS 서비스 아키텍처는 크게 서버, 배포자, 클라이언트로 구성된다. 서버는 입력 비디오 흐름을 배포에 적합한 형식으로 코딩하고 캡슐화하여 비디오 조각과 색인 파일을 생성한다. 배포자는 표준 웹 서버로 구성되어 클라이언트의 요청을 받아 스트리밍에 필요한 리소스를 제공한다. 클라이언트는 이러한 리소스를 요청하고 다운로드하여 사용자에게 연속적인 스트리밍 비디오를 제공한다.
2. 1. 서버
입력 비디오 흐름을 배포에 적합한 형식으로 코딩하고 캡슐화한다. 그런 다음 서로 다른 파일로 분할하여 배포할 준비를 한다. 수집 과정에서 비디오는 인코딩 및 세분화되어 비디오 조각과 색인 파일을 생성한다.- 인코더: 비디오 파일을 H.264 형식으로, 오디오를 AAC, MP3, AC-3 또는 EC-3 형식으로 코딩한다.[10] 이는 MPEG-2 전송 스트림 또는 MPEG-4_Part_14에 의해 캡슐화되어 전송된다.
- 세분화기: 스트림을 동일한 길이의 조각으로 나눈다. 또한 조각화된 파일의 참조를 포함하는 인덱스 파일을 생성하며, .m3u8로 저장된다.
2. 2. 배포자
표준 웹 서버로 구성되며, 클라이언트의 요청에 따라 스트리밍에 필요한 모든 리소스(.m3u8 재생 목록 파일 및 .ts 세그먼트 파일)를 제공한다.[10]2. 3. 클라이언트
클라이언트는 모든 파일과 리소스를 요청하고 다운로드하여 사용자가 연속적인 흐름 비디오로 볼 수 있도록 조립한다. 클라이언트 소프트웨어는 먼저 URL을 통해 인덱스 파일을 다운로드한 다음 사용 가능한 여러 미디어 파일을 다운로드한다. 재생 소프트웨어는 시퀀스를 조립하여 사용자에게 지속적인 디스플레이를 제공한다.3. 기능
HTTP 라이브 스트리밍(HLS)은 불안정한 네트워크 환경에서도 재생 중단을 최소화하는 기능을 제공한다.[1] 예를 들어, 불안정한 무선 네트워크에서 HLS를 사용하면 낮은 화질의 비디오를 선택하여 대역폭 사용량을 줄일 수 있다. 또한 HLS는 동일한 비디오에 대해 여러 서버를 제공하여 가용성을 높이고, 서버 장애 발생 시 다른 서버로 원활하게 전환할 수 있도록 한다.
3. 1. 적응성 (Adaptability)
HTTP 라이브 스트리밍은 사용자가 재생 중단을 느끼지 않도록 불안정한 네트워크 환경에 적응하는 기능을 제공한다. 예를 들어, 불안정한 무선 네트워크에서 HLS를 사용하면 플레이어는 낮은 화질의 비디오를 선택하여 대역폭 사용량을 줄일 수 있다. HLS 비디오는 동일한 비디오에 대해 여러 서버를 제공하여 가용성을 높이고, 서버에 장애가 발생하면 플레이어가 다른 서버로 원활하게 전환할 수 있도록 한다.플레이어가 네트워크 대역폭에 맞게 비디오 품질을 조절할 수 있도록, 원본 비디오는 여러 비디오 품질로 인코딩된다. 서버는 이러한 비디오 인코딩들의 목록인 '마스터 플레이리스트'(변형 스트림)를 제공한다. 플레이어는 재생 중에 변형 스트림 중에서 선택하고, 네트워크 상태가 바뀌면 다른 스트림으로 자연스럽게 전환할 수 있다.
3. 2. 조각난 MP4 사용 (Using fragmented MP4)
2016년 WWDC에서 애플은[11] 조각난 MP4(fMP4)에 대한 바이트 범위 주소 지정을 포함한다고 발표했다. 이는 콘텐츠를 MPEG-2 전송 스트림으로 다중화할 필요 없이 HLS를 통해 재생할 수 있게 한 것이다. 업계는 이를 HLS와 MPEG-DASH 간의 호환성을 위한 단계로 여겼다.[12][13]3. 3. 저지연 HLS (Low Latency HLS)
저지연 HLS (Low Latency HLS)에는 관련이 없는 두 가지 이름과 약어가 존재한다.- 애플 저지연 HLS(ALHLS)는 애플이 2019년 WWDC에서 발표했다.[14]
- 커뮤니티 LHLS(LHLS)는 애플의 발표보다 먼저 나왔으며 더 간단하다고 한다.[15]
이 섹션의 나머지는 애플의 ALHLS에 대해 설명한다. ALHLS는 HLS를 통해 스트리밍할 때 라이브 스트림 재생을 시작하는 시간을 줄이고 라이브 스트리밍 이벤트 동안 해당 시간을 유지함으로써 글래스 투 글래스 지연 시간을 줄인다.
이는 MPEG-CMAF의 fMP4와 마찬가지로 부분 미디어 세그먼트 파일을 혼합하여 작동한다. CMAF와 달리 ALHLS는 부분 MPEG-2 TS 전송 파일도 지원한다. 부분 미디어 세그먼트는 1초 미만의 동일한 세그먼트(예: 200밀리초)로 분할된 표준 세그먼트(예: 6초)이다. 표준 첫 번째 세그먼트는 부분 세그먼트 시리즈로 대체된다. 후속 세그먼트는 표준 크기이다.[16] HTTP/2는 플레이리스트와 함께 세그먼트를 푸시하여 반복적인 HTTP/TCP 연결을 설정하는 오버헤드를 줄이는 데 필요하다.
ALHLS의 다른 기능은 다음과 같다.
- 플레이리스트 델타 업데이트: 플레이리스트 간에 변경된 내용만 전송하며, 일반적으로 단일 MTU에 적합하여 DVR 창이 클 경우 매우 클 수 있는 플레이리스트를 더 효율적으로 로드할 수 있다.
- 플레이리스트 재로드 차단: 라이브 미디어 플레이리스트를 요청할 때 첫 번째 세그먼트도 준비될 때까지 기다린 후 둘 다 동시에 반환한다(추가 HTTP/TCP 요청 절약).
- 렌디션 보고서: ABR 간 전환을 더 빠르게 하기 위해 다른 미디어 렌디션에 메타데이터를 추가한다.
- 새로 추가된 태그: EXT-X-SERVER-CONTROL, EXT-X-PART, EXT-X-SKIP, EXT-X-RENDITION-REPORT
- URL QUERY_STRING ?_HLS 콜백 추가됨
애플은 또한 새로운 도구를 추가했다. ''tsrecompressor''는 오디오와 비디오의 연속적인 저지연 스트림을 생성하고 인코딩한다. ''mediastreamsegmenter'' 도구는 이제 저지연 버전으로 사용할 수 있다. 이는 tsrecompressor에서 UDP/MPEG-TS 스트림을 가져와 위의 새로운 태그를 포함한 미디어 플레이리스트를 생성하는 HLS 세그먼터이다.
저지연 HLS에 대한 지원은 tvOS 13 베타 및 iOS & iPadOS 14에서 사용할 수 있다.[17] 2020년 4월 30일, 애플은 저지연 사양을 HLS 사양의 두 번째 에디션에 추가했다.[18]
3. 4. 동적 광고 삽입 (Dynamic ad insertion)
SCTE-35 사양을 기반으로 HLS에서 동적 광고 삽입을 지원한다. SCTE-35 스플라이스 메시지는 EXT-X-DATERANGE 태그를 사용하여 미디어 재생 목록 파일에 삽입된다. 각 SCTE-35 splice_info_section()은 SCTE35-CMD 속성을 가진 EXT-X-DATERANGE 태그로 표시된다. splice_insert() 명령으로 신호되는 SCTE-35 스플라이스 아웃/인 쌍은 동일한 ID 속성을 가진 하나 이상의 EXT-X-DATERANGE 태그로 표시된다. SCTE-35 스플라이스 아웃 명령에는 SCTE35-OUT 속성이 있어야 하고, 스플라이스 인 명령에는 SCTE35-IN 속성이 있어야 한다.SCTE35-OUT 및 SCTE35-IN 속성을 각각 포함하는 두 개의 EXT-X-DATERANGE 태그 사이에는 미디어 세그먼트 URI 시퀀스가 있을 수 있다. 이러한 미디어 세그먼트는 일반적으로 로컬 또는 사용자 정의 광고로 대체될 수 있는 광고 프로그램을 나타낸다. 광고 교체는 미디어 파일을 교체할 필요가 없으며, 재생 목록의 URI만 다른 광고 프로그램을 가리키도록 변경하면 된다. 광고 교체는 원본 서버 또는 클라이언트의 미디어 재생 장치에서 수행할 수 있다.
4. 서버 구현
HTTP 라이브 스트리밍(HLS)을 지원하는 주요 서버 구현은 다음과 같다.
서버 이름 | 설명 |
---|---|
어도비 미디어 서버 | iOS 기기를 위한 HLS 및 보호된 HTTP 라이브 스트리밍(PHLS)을 지원한다. |
아카마이 | 라이브 및 주문형 스트림에 대한 HLS를 지원한다. |
AT&T | 모든 형식의 라이브 또는 주문형 HLS를 지원한다. |
앤트 미디어 서버 | 라이브 및 주문형 스트림에 대한 HLS 및 저지연 HLS를 지원한다.[19] |
Axis Communication IP 카메라 | [https://www.camstreamer.com CamStreamer] 앱 ACAP를 통해 HLS를 지원한다. |
인스타트 | 주문형 스트림에 대한 HLS를 지원한다. |
아마존 클라우드프론트 | 주문형 스트림에 대한 HLS를 지원한다. |
비트무빈 | 주문형 및 라이브 스트리밍에 대한 HLS를 지원한다. |
CD네트웍스 | 라이브 및 주문형 스트림에 대한 HLS를 지원한다. |
시스코 시스템즈 | 라이브/TSTV/VOD/HLS 및 클라우드 DVR 서비스에 대한 완벽한 엔드 투 엔드 전송을 지원한다. |
클라우드플레어 | 라이브 및 주문형 스트림에 대한 HLS를 지원한다. |
에지캐스트 네트워크 | HLS를 사용하여 교차 장치 스트리밍을 지원한다. |
패스틀리 | 라이브 및 주문형 스트림에 대한 HLS를 지원한다.[20] |
리얼네트웍스의 헬릭스 유니버설 서버 | H.264 및 AAC 콘텐츠의 라이브 및 주문형 HTTP 라이브 또는 주문형 스트리밍을 위해 iPhone OS 3.0 이상을 지원하며 iPhone, iPad 및 iPod을 지원한다. |
마이크로소프트의 IIS 미디어 서비스 | 라이브 및 주문형 스무스 스트리밍 및 HTTP 라이브 스트리밍을 지원한다. |
레벨 3 커뮤니케이션즈 | HLS 라이브 및 주문형 스트림을 지원한다. |
라이트이미지 네트웍스 | 일부 계정에 대한 HLS를 지원한다.[21] |
nginx-rtmp-module을 사용하는 Nginx | 라이브 모드에서 HLS를 지원한다. ngx_http_hls_module 모듈을 포함하는 상용 버전인 Nginx Plus는 HLS/HDS VOD도 지원한다.[22] |
님블 스트리머 | 라이브 및 VOD 모드에서 HLS를 지원하며, 애플 저지연 HLS 사양도 지원한다. |
hls-server 패키지를 사용하는 Node.js | 라이브 모드로의 HLS 인코딩 및 로컬 파일 변환을 지원한다.[23] |
OvenMediaEngine | 라이브 스트리밍을 위해 저지연 HLS(LL-HLS) 및 HLS를 지원하는 오픈 소스 소프트웨어 프로젝트이다. |
피어튜브 | HLS를 지원한다. |
스톰 스트리밍 서버 | 미디어 소스 확장 플레이어에 대한 백업 모드로 HLS를 지원한다.[24] |
타타 커뮤니케이션즈 CDN | 라이브 및 주문형 스트림에 대한 HLS를 지원한다. |
T버시티 | iOS 장치에서 모든 비디오 콘텐츠를 재생하기 위해 즉석 트랜스코딩과 함께 HLS를 지원한다. |
언리얼 미디어 서버 | 버전 9.5부터 저지연 HLS를 지원한다.[25] |
유스트림 | 라이브 방송의 HLS 전송을 지원한다. 원본 오디오 및 비디오 코덱이 HLS 요구 사항을 벗어나는 경우, 수집된 스트림은 재 트랜스코딩된다. |
VLC 미디어 플레이어 | 버전 2.0부터 라이브 및 주문형 스트림을 제공하기 위해 HLS를 지원한다. |
Wowza Media Systems의 와우자 스트리밍 엔진 | 라이브(DVR 포함), 주문형 스트리밍 및 애플 저지연 HLS 사양에 대한 HLS 및 암호화된 HLS를 지원한다. |
5. 사용 사례 (Usage)
- 구글은 안드로이드 3.0 (Honeycomb)에 HTTP 라이브 스트리밍 지원을 추가했다.[26]
- HP는 webOS 3.0.5에 HTTP 라이브 스트리밍 지원을 추가했다.[27]
- 마이크로소프트는 2015년 윈도우 10의 EdgeHTML 렌더링 엔진에 HTTP 라이브 스트리밍 지원을 추가했다.[28]
- 마이크로소프트는 IIS Media Services 4.0에 HTTP 라이브 스트리밍 지원을 추가했다.[29]
- 슬링 미디어는 자사의 슬링박스 및 슬링플레이어 앱에 HTTP 라이브 스트리밍 지원을 추가했다.[30]
- 2014/15년에 BBC는 라이브 인터넷 라디오 및 주문형 오디오 서비스에 HLS-AAC 스트림을 도입했으며, 아이플레이어 라디오 클라이언트로 해당 스트림을 지원한다.[31]
- 트위치는 HTTP 라이브 스트리밍(HLS)을 사용하여 실시간 스트리밍을 전송하고 많은 동시 시청자에게 확장하며, 여러 변형(예: 1080p, 720p 등)을 지원한다.[32]
6. 지원 플레이어 및 서버
HTTP 라이브 스트리밍은 다음 운영 체제에서 기본적으로 지원된다.
- 윈도우 10 버전 1507부터 2004까지(Microsoft Edge 레거시) (더 이상 지원되지 않음)
- 윈도우 11 미디어 플레이어
- macOS 10.6 이상 (사파리 및 퀵타임)
- iOS 3.0 이상 (사파리)
- 안드로이드 4.1 이상[33] (구글 크롬)
윈도우 10은 한때 Chromium 기반 Blink 브라우저 엔진으로 전환하기 전, Microsoft Edge(현재 Edge 레거시)에서 사용되었던 독점 브라우저 엔진인 EdgeHTML에서 HTTP 라이브 스트리밍을 기본적으로 지원했다. Edge 레거시는 윈도우 10 버전 2004까지 포함되었으며, 20H2 버전에서 Edge Chromium으로 대체되었다. 윈도우 11에는 HLS를 기본적으로 지원하는 업데이트된 미디어 플레이어가 탑재되었다.
6. 1. 클라이언트
79 버전부터 현재까지 Edge Chromium에서는 네이티브 지원하지 않음.[34]DRM 지원에는 월간/야간 빌드가 필요