유튜브 동영상 다운로드 방식: Chunking과 MediaSource API

유튜브가 동영상을 다운로드하는 방식

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

  • 웹 개발자, 동영상 스트리밍 기술을 구현하는 개발자
  • 난이도: 중급 이상 (IndexedDB, MediaSource API 사용 경험 필요)

핵심 요약

  • 동영상은 미리 정의된 크기로 쪼개진 채크(Chunk) 형태로 저장됨
  • IndexedDB를 사용해 BLOB 및 ArrayBuffer 형태의 영상 데이터를 암호화하여 저장
  • MediaSource API를 통해 스트리밍 중 동영상 채크를 동적으로 제공
  • 버퍼링 전략: 현재 재생 위치보다 앞의 영역만 미리 로드(예: 2분 재생 시 6분까지 로드)

섹션별 세부 요약

1. 동영상 채크 분할 전략

  • 4K 영상은 다중 품질로 변환 후 저장(예: 4K, 1080p 등)
  • 1시간 영상은 60개의 1분 채크 또는 120개의 30초 채크로 분할
  • 분할 방식은 비디오 크기/길이에 따라 유동적

2. IndexedDB 기반의 저장 방식

  • IndexedDBBLOB 및 ArrayBuffer 형식의 암호화된 채크 저장
  • 오프라인 재생 시 암호화 해독 후 채크 복구
  • IndexedDB는 브라우저 내부 저장소로, 서버와의 상호작용 없이 작동

3. 스트리밍 및 버퍼링 로직

  • 버퍼링 범위 제한: 전체 동영상이 아닌 현재 재생 위치 기반의 앞 영역만 로드
  • 예: 2분 재생 시 6분까지 로드 (최대 4분 범위)
  • 라이브 스트리밍 시 동일한 로직 적용

4. MediaSource API 활용

  • 동적 채크 전송: 태그에 직접 MP4 파일을 로드하는 대신 MediaSource API 사용
  • 비트레이트 조정, 채크 동적 추가 가능
  • 유튜브도 MediaSource API를 활용

결론

  • 동영상 채크 분할 + IndexedDB 활용이 오프라인 저장의 핵심
  • MediaSource API를 통해 스트리밍 효율성 극대화
  • 버퍼링 범위 제한은 리소스 절약과 네트워크 유연성 확보에 기여