피드로 돌아가기
올리브영 테크블로그Frontend
원문 읽기
HLS 기반 숏폼 스트리밍 구현기: iOS/Android 호환성 대응 사례
올리브영 셔터가 MP4 대신 HLS(M3U8) 포맷 도입으로 초기 재생 시간을 60~70% 단축하고 활성 사용자 21% 증가
AI 요약
Context
셔터 커뮤니티에 숏폼 콘텐츠를 도입하면서 기존 MP4 방식의 한계를 마주했다. MP4는 파일을 처음부터 끝까지 다운로드해야 재생이 원활하고, 네트워크 상태 변화에 대응할 수 없어 사용자 경험이 저하되었다. 또한 웹 기반 인코딩은 CPU 의존으로 느리고, iOS·Android 간 호환성과 색상 표현 문제도 발생했다.
Technical Solution
- HLS(M3U8) 포맷 도입: MP4 대신 세그먼트 단위로 분할된 HLS를 채택해 필요한 부분만 선택적 로드 가능하게 변경
- AWS MediaConvert + Lambda 파이프라인 구성: 사용자 업로드 MP4를 자동으로 240p·360p·480p·720p·1080p 다중 해상도 M3U8으로 변환
- 하이브리드 아키텍처 적용: 영상 압축·인코딩은 네이티브(iOS VideoToolbox, Android MediaCodec)에서 처리하고, 업로드·UI는 웹에서 처리
- HLS.js 라이브러리 도입: Chrome·Firefox 등 HLS 미지원 브라우저에서도 MSE를 활용해 재생 가능하게 구현
- iOS 사파리 네이티브 HLS 분기 처리: iOS 15~16에서 MSE 기반 재생 문제 해결을 위해 네이티브 HLS 우선 로드
- Android 동적 톤 보정: HDR 영상 촬영 증가로 인한 화이트아웃 현상을 AWS MediaConvert에서 HDR 여부만 판별한 후, 클라이언트에서 동적 톤 조정
Impact
- 초기 재생 시간: MP4 2~5초 → HLS 0.5~1.5초 (60~70% 단축)
- 버퍼링 발생률: 높음 → 낮음 (네트워크 변동 시에도 어댑티브 스트리밍으로 최소화)
- 메모리 사용량: 전체 파일 버퍼링 → 세그먼트 단위 처리로 최대 절약
- CDN 캐싱 효율성: 파일 단위 → 세그먼트 단위 분산 캐시로 히트율 향상
- 활성 사용자(AU): 약 21% 증가
- 콘텐츠 기반 전환율: 5% 개선
Key Takeaway
스트리밍 서비스 구현 시 단순히 포맷 선택을 넘어 플랫폼별 네이티브 지원 여부(iOS 사파리, Android 색상 표현)와 인코딩 성능을 동시에 고려해야 한다. 성능 최적화(웹 기반 인코딩의 한계)와 운영 유연성(네이티브 배포 지연)을 양립하려면 하이브리드 아키텍처로 각 계층의 강점을 활용하는 것이 효과적이다.
실천 포인트
숏폼·스트리밍 서비스를 구축하는 팀은 영상 포맷을 선택할 때 단순히 압축률이 아니라 세그먼트 기반 어댑티브 스트리밍(HLS/DASH) 지원 여부를 먼저 평가하고, 네이티브 앱에서 인코딩·압축을 처리한 후 웹에서 스트리밍만 담당하는 하이브리드 구조를 도입하면 초기 재생 시간을 60% 이상 단축할 수 있다.