HLS(HTTP Live Streaming)는 Apple이 개발한 비디오 스트리밍 프로토콜로, 주로 인터넷을 통해 오디오 및 비디오 콘텐츠를 실시간 또는 주문형(on-demand)으로 전달하는 데 사용
핵심 개념
- HTTP 기반
- 콘텐츠를 일반 HTTP 서버를 통해 전송하므로 방화벽, CDN, 캐시 서버와 잘 호환
- Segment(조각) 방식 전송
- 전체 비디오를 작게 분할(보통 2~10초)한 .ts 파일로 쪼개어 순차적으로 전송
- M3U8 플레이리스트 사용
- .m3u8 형식의 플레이리스트 파일을 사용해 어떤 세그먼트를 재생할지 정의
- 적응형 비트레이트 스트리밍(ABR)
- 네트워크 상태에 따라 자동으로 품질(해상도/비트레이트)을 조정해 버퍼링을 최소화
HLS 구성 요소
- Master Playlist (m3u8)
- 여러 해상도/비트레이트 버전을 링크한 상위 목록
- Media Playlist (m3u8)
- 특정 품질의 세그먼트 목록 (ex: segment1.ts, segment2.ts...)
- Media Segments (.ts)
- 실제 오디오/비디오 데이터가 들어 있는 짧은 MPEG-TS 파일들
작동 방식 요약
- 클라이언트가 .m3u8 플레이리스트 요청
- 플레이리스트에 있는 세그먼트(.ts) 파일들을 순차 다운로드
- 다운로드한 세그먼트를 재생
- 네트워크 상태 따라 다른 품질의 플레이리스트로 전환 가능
어디에 사용되나?
- YouTube, Twitch, Netflix 등 OTT 서비스
- 모바일/웹 브라우저 기반 스트리밍
- 라이브 방송 시스템 (뉴스, 스포츠 등)
장점
- 범용성: 브라우저와 모바일 기기에서 바로 재생 가능
- HTTP 사용: 별도 스트리밍 서버 필요 없음
- 적응형 스트리밍: 다양한 네트워크 환경에서 안정적 재생
M3U8
m3u8은 HLS(HTTP Live Streaming)에서 사용되는 플레이리스트 파일 형식으로, UTF-8 인코딩된 M3U 파일. 쉽게 말해, 재생할 미디어 파일(.ts 세그먼트 등)의 목록과 스트리밍 정보를 담고 있는 텍스트 파일
m3u8 파일이 하는 역할
- 스트리밍할 미디어 세그먼트(.ts) 들의 경로를 나열
- 각 세그먼트의 길이, 순서 정보를 포함
- 경우에 따라 해상도별 스트림 목록(Master Playlist) 역할도 함
m3u8의 두 종류
- Master Playlist
사용자의 네트워크 상황에 따라 적절한 화질의 Media Playlist를 선택#EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360 low.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=1400000,RESOLUTION=1280x720 mid.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=2800000,RESOLUTION=1920x1080 high.m3u8
- 여러 화질 버전의 Media Playlist를 포함한 상위 목록
- Media Playlist
위 순서대로 .ts 파일을 다운로드하고 재생#EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXTINF:9.0, segment1.ts #EXTINF:10.0, segment2.ts #EXTINF:8.5, segment3.ts #EXT-X-ENDLIST
- 실제 비디오 세그먼트 목록을 나열
주요 태그 설명
#EXTM3U | m3u8 파일의 시작을 알림 |
#EXTINF:<duration> | 각 세그먼트의 재생 길이(초) |
#EXT-X-STREAM-INF | 마스터 재생 목록에서 각 해상도 스트림 정의 |
#EXT-X-ENDLIST | 리스트가 종료되었음을 의미 (VOD에서 사용) |
#EXT-X-TARGETDURATION | 세그먼트의 최대 길이 |
m3u8 파일은 어떻게 쓰이나?
- 웹 플레이어에서 .m3u8 주소를 불러와 스트리밍 시작
- 라이브 방송은 .m3u8이 실시간으로 업데이트됨
- 동영상 다운로드 도구에서 .m3u8을 분석해 전체 영상 다운로드 가능
.HLS에서 .ts 파일이란?
HLS 스트리밍에서 .ts는 MPEG-TS (MPEG Transport Stream) 형식의 비디오 세그먼트 파일
- 비디오와 오디오 데이터를 포함한 실시간 전송용 포맷
- .ts = Transport Stream
- 스트리밍을 위해 짧게 나뉜 (예: 5~10초) 미디어 조각들
예시로 비교
파일 종류 확장자 의미
스트리밍 비디오 세그먼트 | .ts | MPEG Transport Stream |
웹 프로그래밍 언어 파일 | .ts | TypeScript 소스코드 |
스트리밍에서 .ts 사용 예시
#EXTINF:10.0,
video1.ts
#EXTINF:10.0,
video2.ts
#EXTINF:10.0,
video3.ts
여기서 video1.ts, video2.ts 등은 비디오 데이터 조각들이고, 순서대로 스트리밍
'공부 > CS' 카테고리의 다른 글
WAF, ZTN (1) | 2025.04.27 |
---|---|
API Gateway (0) | 2025.03.24 |
워터마크 기술 개념 (0) | 2025.03.03 |
아키텍처 간략 정리 (0) | 2025.01.05 |
언어별 연산 속도 (0) | 2024.12.30 |