핵심 요약
티빙의 쇼츠 플레이어를 단일 플레이어 아키텍처로 구현하고 프리로드 매니저를 도입해 메모리 제약과 SurfaceView 렌더링 이슈를 해결했습니다.
구현 방법
- 단일 플레이어를 Fragment에 올려두고 화면 전환 시 View 참조만 변경하는 아키텍처
- Surface 기반 렌더링으로 출력 대상 추상화, 디코더 자원 재사용 가능
- Media3 Video Renderer를 이용해 디코더 재시작 없이 Surface 교체로 출력 전환
- PreloadManager로 인접 아이템을 Rank 1~4로 프리로드, Rank1은 청크 데이터까지 미리 준비
- 프리로드 아키텍처로 DRM 콘텐츠의 경우 차별적 프리로드 동작 반영
- SCROLL_STATE_IDLE 시 첫 프레임 inflate로 TTFF를 분산
- 탭 이탈 시 플레이어 리소스 해제 및 재진입 시 재할당
주요 결과
- MVP에서 평균 VST 약 740ms, 프리로드 적용 후 347ms로 감소(드 DRM 콘텐츠의 경우 더 큰 체감)
- 프리로드로 인한 시나리오 전반에서 대부분 300ms 내로 재생 시작, 약 40~50% 개선
- 하나의 플레이어 재사용으로 좌우 체인 탐색 등 확장도 추가 메모리 할당 없이 가능


