Shaka Player 파헤치기 - 5.1.0 Changelog 분석

5.0.0이 정리에 집중했다면, 5.1.0은 그 위에 ABR 판단 기준과 지원 플랫폼을 넓힌 릴리스입니다. 이 글에서는 체인지로그와 주요 PR을 근거로 5.1.0의 변화를 살펴봅니다.

릴리스 개요

5.1.0은 2026년 4월 15일에 배포되었습니다. 새 기능 41건, 버그 수정 81건, 성능 개선 23건이며 Breaking Change 표시는 없습니다.

체인지로그에 따로 드러나지 않지만 중요한 변경도 있습니다. 업그레이드 가이드는 언어, 역할, 코덱 등의 개별 선호 설정이 v5.1에서 deprecated 되었고 v6.0에서 제거된다고 안내합니다.

1// 이전 방식 (deprecated, 경고와 함께 동작)
2player.configure('preferredAudioLanguage', 'ko');
3player.configure('preferredAudioChannelCount', 6);
4
5// 새로운 방식: 우선순위 순서의 배열
6player.configure('preferredAudio', [
7  { language: 'ko', channelCount: 6 },
8  { language: 'ko' },
9  { language: 'en' },
10]);

preferredText, preferredVideo도 같은 형식입니다. 지금 당장 깨지지는 않지만 v6 전에 옮겨야 합니다.

ABR: 드롭 프레임 모니터링과 저지연 인식

드롭 프레임을 화질 판단에 반영

#9918 Monitor dropped frames to influence decisions (이슈 #745)

네트워크가 충분해도 기기가 해당 화질을 디코딩하지 못하면 프레임이 떨어집니다. SimpleAbrManager는 이제 드롭 프레임 비율을 주기적으로 확인하고, 임계값을 넘으면 현재 스트림을 비활성화한 뒤 다시 판단합니다.

설정기본값(5.3.4)의미
abr.droppedFramestrue기능 활성화
abr.advanced.droppedFramesThreshold0.15비활성화 임계 비율
abr.advanced.droppedFramesInterval2확인 주기(초)
abr.advanced.droppedFramesBanDuration30비활성화 시간(초)

저사양 기기에서 화질이 낮아지는 원인을 분석할 때 네트워크 외에 이 경로도 살펴봐야 합니다. 이 기능은 getVideoPlaybackQuality를 사용할 수 있어야 동작합니다.

저지연 여부 전달

#9882는 ABR에 스트림이 저지연인지 알려 줍니다. PR 설명대로 내장 ABR은 이 값을 쓰지 않으며 커스텀 ABR 구현을 위한 변경입니다.

플랫폼: TiVo OS, Titan OS 지원

스마트 TV 플랫폼으로 TiVo OS(#9758)와 Titan OS(#9696)의 기본 지원이 추가되었습니다. 두 PR 모두 lib/device/ 아래에 기기 정의를 추가하는 형태입니다. Titan OS는 HDR과 화면 크기 감지도 함께 추가되었습니다.

"basic support"라는 표현대로, TiVo OS PR에는 최대 해상도 탐지나 HDR 역량은 추후 맞춰 가야 한다고 적혀 있습니다.

DASH와 HLS

#9764 Enable automatic XLink processing with fast detection and performance improvements

플래그에 의존하던 XLink 처리를 없애고, MPD에 XLink가 있을 때만 처리하도록 바꿨습니다. XLink가 없는 MPD는 processXlinks를 건너뜁니다. PR은 큰 MPD에서의 성능 개선을 목표로 밝히고 있습니다.

DASH JSON

#9788은 JSON 형식의 MPD를 실험 빌드에 추가했습니다. PR 설명에 따르면 내부적으로 XML로 변환해 처리하므로 효율적이지 않고 테스트 용도입니다. 이 기능은 뒤에 5.3.0에서 제거됩니다.

HLS

  • CAN-SKIP-DATERANGES(#9679): 플레이리스트 델타 업데이트에서 DATERANGE 태그를 생략하는 기능을 지원합니다.
  • 챕터 이미지(#9738): Apple의 JSON 챕터 규격에 있는 이미지를 지원하며, 이 이미지는 UI의 시크바와 챕터 메뉴, MediaSession에서도 사용됩니다.

자막과 광고

  • textDisplayer.subtitleDelay(#9939): 자막 타이밍을 수동으로 조절합니다.
  • raw CEA-608 추출(#9730): PR 설명에 따르면 Apple의 HLS 도구가 생성하는 형식입니다.
  • ad-playing 이벤트(#9855, 이슈 #9850): 광고 재생이 실제로 시작되는 시점을 알려 줍니다.
  • 이 외에 ad-interstitial-preloaded 이벤트와 ad-break-started의 startedAt 매개변수가 추가되었습니다.
  • streaming.clampAppendWindowToDuration(#9699, 이슈 #9674): 기본값은 false입니다.

MSF, 네트워크, UI

MSF는 MoQT draft-16 지원과 auto, draft-14, draft-16 버전 설정이 추가되었습니다(#9966). 이 흐름은 5.3.0에서 구버전 제거로 이어집니다.

네트워크에서는 networking.commonAccessTokenHeaderName이 추가되었습니다(#9949, 이슈 #9948). CTA-5007의 기본 헤더 이름인 cta-common-access-token이 기본값입니다.

UI 변경은 다음과 같습니다.

  • 챕터 이미지 표시, 챕터 메뉴의 썸네일
  • showUIOnPaused, mediaSession.allowAutoPiP 설정
  • 볼륨 바 마우스 휠 조절, 터치 데스크톱의 seekOnTaps
  • TrackLabelFormat의 LABEL_OR_LANGUAGE, LANGUAGE_OR_LABEL
  • showMenusOnTheRight(#9838): 5.3.0에서 deprecated 됩니다.

5.1.x 패치의 주요 수정

5.1.1부터 5.1.27까지 버그 수정 123건과 성능 개선 19건이 있습니다. 앞선 5.0.x와 공유되는 항목을 뺀 대표 수정입니다.

분류주요 항목버전
ABR드롭 프레임 사용 시 재생 속도 계산 수정5.1.2
자막preferredText를 외부 트랙에 적용5.1.2
보안광고 클릭 URI를 http(s) 스킴으로 제한5.1.18
MSEappend 에러는 스트림 비활성화 시에만 recoverable 표시5.1.18
프리페치프리페치 데이터의 제곱 시간 복사 제거5.1.20
오프라인IndexedDB 연결 누수 수정5.1.20
파서64비트 largesize 0, 길이 0 WVTT 박스의 hang 방지5.1.23
생명주기재생이 멈춘 상태에서 destroy()가 끝나지 않던 문제 수정5.1.25
라이브재등장한 Period ID로 인한 프리즈 수정5.1.26

#10412에서 지적한 것처럼 광고 클릭 URI는 매니페스트와 광고 응답에서 온 값이 window.open()으로 바로 전달되고 있었습니다. 광고 인터스티셜을 쓴다면 5.1.18 이상이어야 이 제한이 적용됩니다.

INFO

5.1 라인의 마지막 버전은 2026년 10월 16일의 5.1.27이며, 현재 유지보수 브랜치 목록에는 없습니다.

마치며, 정리

  • 5.1.0은 Breaking Change 없이 ABR 판단 기준과 지원 기기를 넓혔습니다.
  • SimpleAbrManager는 이제 드롭 프레임을 근거로 화질을 내릴 수 있습니다.
  • 선호 설정은 preferredAudio, preferredText, preferredVideo 배열로 옮겨야 하며, 기존 설정은 v6에서 제거됩니다.
  • DASH XLink가 자동 처리로 바뀌었고, DASH JSON과 showMenusOnTheRight는 나중에 정리된 실험적 추가였습니다.
  • 5.1.x를 쓴다면 유지보수 중인 라인으로의 업그레이드를 검토할 시점입니다.