Skip to content

WWDC18 session 502: Measuring and Optimizing HLS Performance

Joonwon Lee edited this page Jul 15, 2018 · 2 revisions

Measuring and Optimizing HLS Performance

WWDC 2018 Measuring and Optimizing HLS Performance 세션을 요약 공유하고자 합니다.

1 eaqkft83svh2k8z8jq_pmg-2


Intro

해당 세션은 크게,

  • HLS 스트리밍 QoS에 대한 기초적 용어 및 이해
  • 객관적으로 HLS 스트리밍 QoS를 측정하는 법
  • HLS 스트리밍 QoS문제의 조사 방법 및 해결방법

HLS 스트리밍 기본적인 구조

1 bssl6uef5uklh_u7j0mckw

HLS QoS를 위한 KPI 설정방법

5가지 HLS 퍼포먼스 KPI

  • 초기 재생 시간
  • 지연 재생 횟수
  • 지연 재생 시간
  • 비트레이트
  • 에러

초기 재생 시간

초기 재생을 위한 프로세스
1 2lndtcjlfvnrc6hdy5eugg

재생 지연(stall) 횟수, 시간 확인

  • AVPlayerItemAccessLog를 이용해 지연횟수, 지연시간 및 실제 재생시간등을 확인 가능 1 qikoozghtzw7c077cvm9vq

HLS 퍼포먼스 개선하기

  • 초기재생 시간 줄이기
  • 재생 지연 조사하기
  • 에러 조사하기

초기 재생 시간 줄이기

1 ks4qwowiyfp7jycfysmpkw

  • AVAsset을 이용한 초기 재생 시간 줄이기
    • 재생 누르기 전에 AVAsset 생성 및 프로퍼티 미리 로딩하기
    • 암호화키도 미리 땡겨 놓기(AVContentKeySession이용)
  • AVPlayer, AVPlayerItem을 이용해서 초기재생 시간 줄이기
    • 버퍼링 전에 AVPlayerItem을 미리 세팅
    • AVPlayer.rate을 AVPlayerItem 세팅전에 세팅하기
    • 여러 플레이 아이템의 경우, AVQueuePlayer사용하기
    • 여러 플레이 아이템의 경우, 다음 아이템 미리 플레이 큐에 넣어놓기

재생 지연 조사하기

  • AVPlayerItemPlaybackStalled 노티걸기 1 d1fm0gwchh4fonm-1hyv_q

  • AVPlayerItem.isPlaybackLikelyToKeepUp 확인

screen shot 2018-07-16 at 12 30 42 am
  • AVPlayerItemErrorLog, AVPlayerItemAccessLog 확인
screen shot 2018-07-16 at 12 30 52 am

재생 지연을 위해서 (컨텐츠 서버가 해야 할일)

  • 전체 비트레이트 셋을 제공
  • 미디어 플레이리스트, 세그먼트, 키를 지연없이 전달
  • live 플레이리스트를 타겟시간에는 업데이트 시키기
  • 플레이 리스트간에 시퀀스가 비연결되는 지점 동기화하기
  • 서버사이드 실패는 확실히 넘기기

스트리밍 에러 조사

  • AVPlayerItemErrorLog 확인
    • error 커멘트에 상세 내용 나옴 1 zu_sxrvo9skpdn89d-xbbq
  • AVPlayerItem, AVPlayer의 status 확인후, AVPlayerItemError 확인
    • AVPlayerItem.Error는 재생을 종료시키고, 플레어 큐에서 아이템을 제거 시킴