티스토리 뷰
HTTP Live Streaming
오디오와 비디오를 iOS, tvOS, macOS 기기로 보냅니다.
Overview
HTTP 라이브 스트리밍(HLS)은 iPhone, iPad, iPod touch 및 Apple TV를 포함한 iOS 기반 장치와 데스크톱 컴퓨터(macOS)에서 재생하기 위해 웹 서버에서 HTTP를 통해 오디오와 비디오를 전송합니다.
웹을 구동하는 동일한 프로토콜을 사용하여 HLS는 일반 웹 서버와 콘텐츠 전송 네트워크를 사용하여 콘텐츠를 배포합니다.
HLS는 유무선 연결의 사용 가능한 속도에 맞춰 재생을 최적화함으로써 네트워크 상태에 따라 동적으로 적응하고 신뢰할수 있게 설계되었습니다.
애플은 AVKit, AVFoundation, WebKit 등 HTTP Live Streaming을 지원하는 몇 가지 프레임워크를 제공합니다.
developer.apple.com/documentation/http_live_streaming
Understanding the HTTP Live Streaming Architecture
스트리밍 미디어를 제공하기 위해 HLS의 주요 구성 요소가 어떻게 동작하는지 이해합니다.
Overview
개념적으로, HTTP Live Streaming은 서버 구성요소, 배포 구성요소 및 클라이언트 소프트웨어의 세 부분으로 구성됩니다.
일반적인 구성에서 하드웨어 인코더는 오디오, 비디오 입력을 받아 HEVC 비디오와 AC-3 오디오로 인코딩하고 조각난 MPEG-4나 MPEG-2 전송 스트림을 출력합니다.
소프트웨어 스트림 분할기가 스트림을 일련의 짧은 미디어 파일로 break하고 그것들은 웹 서버에 올라갑니다.
또한 분할기는 미디어 파일 목록을 포함하는 인덱스 파일을 생성하고 유지 관리합니다.
인덱스 파일의 URL이 웹 서버에 게시됩니다.
클라이언트 소프트웨어는 인덱스를 읽은 다음 나열된 미디어 파일을 순서대로 요청하고 세그먼트 간에 일시 중지 또는 갭이 생기지 않게 화면에 표시합니다.
Server Component
서버는 미디어의 입력 스트림을 가져오고 디지털로 인코딩하는 역할을 합니다.
전달에 적합한 포맷으로 캡슐화하고 캡슐화된 미디어를 배포하기 위해 준비합니다.
라이브 이벤트의 경우, 서버가 기성 하드웨어가 될 수 있는 미디어 인코더와 인코딩된 미디어를 세그먼트로 break하고 파일로 저장할 방법이 필요합니다.
애플에서 제공하는 미디어 스트림 분할기 같은 소프트웨어가 될 수도 있고 써드파티 솔루션이 될 수도 있습니다.
Distribution Component
배포 시스템은 HTTP를 통해 클라이언트로 미디어 파일 및 인덱스 파일을 전달하는 웹 서버 또는 웹 캐싱 시스템입니다.
컨텐츠를 전달하기 위한 사용자 서버 모듈이 필요하지 않으며 일반적으로 웹 서버에는 거의 구성이 필요하지 않습니다.
HLS를 실제로 배포하려면 브라우저용 HTML 페이지나 클라이언트 앱이 수신자 역할을 해야합니다.
또한 웹 서버를 사용해야하고, HEVC 또는 H.264 비디오, AAC 또는 AC-3 오디오를 포함하는 조각난 MPEG-4 미디어 파일로 라이브 스트림을 인코딩하는 방법도 필요합니다.
Client Software
클라이언트 소프트웨어는 요청할 적절한 미디어를 결정하고 해당 리소스를 다운로드한 다음 미디어를 재구성하여 사용자에게 연속 스트림으로 표시될 수 있도록 합니다.
클라이언트 소프트웨어는 iOS 3.0 이상과 Safari 4.0 이상이 설치된 컴퓨터에 포함되어 있습니다.
클라이언트 소프트웨어는 스트림을 식별하는 URL을 사용하여 인덱스 파일을 가져오는 것으로 시작합니다.
인덱스 파일은 사용 가능한 미디어 파일, 암호 해독 키 및 사용 가능한 대체 스트림의 위치를 지정합니다.
선택한 스트림에서 클라이언트는 사용 가능한 각 미디어 파일을 순서대로 다운로드합니다.
각 파일에는 연속된 스트림 세그먼트가 포함됩니다.
다운로드된 데이터가 충분하면 클라이언트는 재조립된 스트림을 사용자에게 제공하기 시작합니다.
클라이언트는 암호 해독 키를 가져오고, 인증을 허용하도록 사용자 인터페이스를 인증 또는 표시하며, 필요에 따라 미디어 파일의 암호를 해독합니다.
이 프로세스는 클라이언트가 인덱스 파일에서 EXT-X-ENDLIST 태그를 발견할 때까지 계속됩니다. EXT-X-ENDLIST 태그가 없는 경우 인덱스 파일은 진행 중인 브로드캐스트의 일부입니다.
브로드캐스트가 진행되는 동안 클라이언트는 주기적으로 새 버전의 인덱스 파일을 로드합니다.
클라이언트는 업데이트된 인덱스에서 새 미디어 파일 및 암호화 키를 찾고 이러한 URL을 큐에 추가합니다.
'iOS' 카테고리의 다른 글
[iOS] UIView.animate 애니메이션 만들기 (0) | 2021.02.23 |
---|---|
[iOS] Alamofire 순서대로 API 실행하기 (0) | 2021.02.23 |
[iOS] API 호출하기 (Advanced) (0) | 2021.02.01 |
[iOS] UIView layer로 뷰 그리기, 그림자 (0) | 2021.01.29 |
[iOS] frame과 bounds (1) | 2021.01.20 |