728x90
반응형
HLS
- HLS: HTTP Live Streaming
- 콘텐츠를 작은 세그먼트로 나누어서 .m3u8 파일과 .ts 세그먼트 파일로 구성함
- 즉 비디오를 2-10초 정도의 작은 .ts(Transport Stream)으로 나누게 됨
- m3u8 파일이 모든 세그먼트와 재생 정보를 관리하는 익덱스 파일
- 적응형 비트레이트: 네트워크 상태에 따라 다양한 화질 선택 가능
- m3u8 형식 혹은 .ts 파일이 hls 스트리밍에 사용되는 파일 형식
예시
manifest.m3u8 (메인 인덱스 파일)
|- quality_high.m3u8 (고화질 인덱스)
| |- segment0_high.ts
| |- segment1_high.ts
| |- ...
|- quality_medium.m3u8 (중간 화질 인덱스)
| |- segment0_medium.ts
| |- ...
|- quality_low.m3u8 (저화질 인덱스)
|- segment0_low.ts
|- ...
FFMPEG 이용한 m3u8 파일 변환
- 여러개의 .ts 파일과 .m3u8 파일이 생김
- m3u8 파일이 각 ts 파일에 대한 인덱스 역할을 함
ffmpeg -i <video_file>.mp4 -profile:v baseline -level 3.0 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls <output_file>.m3u8
HTTP Streaming vs HLS
주요 차이점
- 적응성
- HLS: 네트워크 상태에 따라 화질을 자동으로 조정
- HTTP 스트리밍: 단일 화질만 제공, 적응형 기능 없음
- 지연 시간
- HLS: 일반적으로 10-30초 지연 발생
- HTTP 스트리밍: 버퍼링 시간만큼의 지연
- 대역폭 효율
- HLS: 현재 네트워크 상태에 맞는 최적의 화질 제공
- HTTP 스트리밍: 고정 화질로 네트워크 상태가 좋지 않으면 버퍼링 발생
- 서버 부하
- HLS: 여러 화질의 세그먼트를 미리 생성해야 함
- HTTP 스트리밍: 단일 파일만 제공하므로 서버 부하 낮음
- 구현 복잡성
- HLS: 인코딩, 세그먼트화, 인덱스 파일 관리 등 복잡한 과정 필요
- HTTP 스트리밍: 단순히 파일을 제공하는 것만으로 가능
- 확장성
- HLS: CDN과 연계하여 우수한 확장성 제공
- HTTP 스트리밍: CDN 활용 가능하나 적응형 기능 부재
- 호환성
- HLS: iOS, Safari에서 네이티브 지원, 다른 브라우저는 추가 라이브러리 필요
- HTTP 스트리밍: 대부분의 브라우저에서 네이티브 지원
간단한 비유
- HLS는 도서관에서 책의 각 장을 필요할 때마다 가져오는 것과 같음
- 일반 HTTP 스트리밍은 책 전체를 한 번에 빌려오는 것과 같음
728x90
반응형
'기록 > 업무일지' 카테고리의 다른 글
[업무일지] 오케스트레이션 관련 제안 (1) | 2024.11.26 |
---|---|
[업무일지] 서버 구성 관련 제안 정리 (1) | 2024.11.25 |
[업무일지:번역파일] 액셀 자동화 업무일지 - 3 property 데이터 저장 (1) | 2024.11.11 |
[업무일지:번역파일] 액셀 자동화 업무일지 - 2 json 파일 읽기 (2) | 2024.11.08 |
[업무일지:번역파일] 액셀 자동화 업무 일지 - 1 설계 (7) | 2024.11.07 |