apple/HLS

[HLS] HTTP Live Streaming Overview

lgvv 2024. 12. 5. 01:05

HTTP Live Streaming Overview

https://developer.apple.com/documentation/http-live-streaming

목차

Overview

  • HLS(HTTP Live Straming)은 애플 디바이스에서 멀티미디어를 재생하기 위해 웹서버에서 HTTP 오디오와 비디오를 전송.
  • HLS는 유선 및 무선 연결의 사용 가능한 네트워크 속도에 맞게 재생을 최적화함으로써 네트워크 상황에 동적으로 적응하도록 설계됨.
  • HLS supports the following
    • 라이브 방송 및 VOD
    • 각기 다른 속도로 여러 대체 스트림
    • 네트워크 대역폭 변화에 대응하는 지능적인 스트림 전환
    • 사용자 인증 및 미디어 암호화

Media encryption and user authentication

  • HLS의 세가지 구성요소

  • 일반적으로 하드웨어 인코더는 오디오 및 비디오 입력을 받아 HEVC 비디오와 AC-3 오디오로 인코딩하여 MPEG 형태로 스트림 출력
  • 소프트웨어 스트림 세그먼터는 스트림을 짧은 미디어 파일로 분해하고, 이는 웹 서버에 저장.
  • 세그먼트는 미디어 파일의 목록을 포함하여 인덱스 파일을 만들고 유지 관리

Access media through client software

  • 클라이언트 입장에서는 요청할 적절한 미디어를 결정하고, 해당 리소스를 다운받아, 사용자에게 연속적으로 보여줄 수 있도록 재조립.
  • HLS 플레이어와 서버간 통신하는 규칙은 HTTP Live Streaming 2nd Edition을 참조할 것.
  • 애플은 AVKit, AVFoundation, WebKit 등을 통해 HLS를 지원하는 여러 프레임워크가 존재.
    • iOS 3.0 +, Safari 4.0+ 부터 지원하여 클라이언트 소프트웨어를 직접 개발할 필요는 없음.
  • 하지만 소프트웨어를 직접 개발한 경우에는 URL을 통해서 인덱스 파일을 가져오는 것부터 처리
    • 인덱스 파일을 순서대로 지정
      • 사용 할 미디어 파일
      • 디코딩
      • 대체 가능한 스트림 위치
    • 충분히 다운로드 되면, 스트림을 재조립하여 사용자에게 재생
  • Important
    • 클라이언트는 디코딩 키를 가져오고, 필요한 미디어 파일을 해독하는 역할 수행.
      • 클라이언트가 인덱스 파일에서 EXT-X-ENDLIST 태그를 발견할 때까지 프로세스를 계속 진행
      • EXT-X-ENDLIST 태그가 없다면 인덱스 파일은 계속 진행 중인 영상의 일부
      • 진행 중인 상태에서는 주기적으로 인덱스 파일의 새 버전을 로드
      • 업데이트 된 인덱스에서 새 미디어 파일과 함호화 키를 찾아 이 URL을 재생 버퍼에 추가