Adaptive Bitrate(ABR)는 사용자 채널 대역폭에 따라 비디오 품질을 동적으로 변경하는 스트리밍 기술입니다. 프로그레시브 다운로드와 달리 ABR은 비디오를 2~10초의 작은 세그먼트로 나누고 실시간으로 전환합니다. Bitmovin Video Developer Report(2025)에 따르면, 86%의 스트리밍 서비스가 모바일 기기에서 원활한 재생을 위해 ABR을 사용합니다.
핵심 요점
Adaptive Bitrate(ABR)는 비디오 파일을 다양한 비트레이트와 해상도의 여러 변형으로 인코딩하고, 플레이어가 실시간으로 적절한 변형을 자동 선택하는 미디어 콘텐츠 스트리밍 방법입니다. 사용자는 현재 인터넷 속도에 따라 버퍼링 없이 최고 품질을 얻을 수 있습니다.
기존 프로그레시브 다운로드와 달리 ABR은 전체 파일을 로드할 필요가 없습니다. 플레이어는 원하는 품질의 짧은 세그먼트를 요청하고 세그먼트 사이에서 다른 비트레이트로 전환할 수 있습니다. 이는 네트워크 속도가 지속적으로 변화하는 모바일 애플리케이션에 필수적인 기술입니다.
적응형 스트리밍 기술은 2006년 Move Networks가 ABC TV 채널 방송을 위해 최초로 상용화했습니다. 2009년 Apple은 HTTP Live Streaming(HLS)을 발표했으며, 이는 HTTP 기반 최초의 널리 채택된 ABR 표준이 되었고 현재까지 iOS 생태계를 지배하고 있습니다.
2012년 MPEG은 MPEG-DASH(Dynamic Adaptive Streaming over HTTP) 표준을 특정 공급업체에 종속되지 않는 범용 ABR 형식으로 출시했습니다. DASH는 모든 주요 플랫폼에서 지원되며 ISO가 채택한 유일한 ABR 표준입니다.
ABR 스트리밍 프로세스는 콘텐츠 준비 단계에서 시작됩니다. 원본 비디오는 144p, 360p, 720p, 1080p, 4K 등 다양한 비트레이트의 여러 변형으로 인코딩됩니다. 각 변형은 일반적으로 2, 4, 6 또는 10초의 동일한 길이의 세그먼트로 나뉩니다.
서버에 매니페스트 파일이 생성되어 사용 가능한 변형, 비트레이트, 해상도, 코덱 및 세그먼트 URL을 설명합니다. 플레이어는 매니페스트를 다운로드하여 분석하고 빠른 시작을 위해 가장 낮은 비트레이트로 재생을 시작합니다.
<!-- MPEG-DASH MPD manifest -->
<MPD profiles="urn:mpeg:dash:profile:isoff-live:2011">
<Period>
<AdaptationSet mimeType="video/mp4">
<Representation id="720p" bandwidth="2800000"
width="1280" height="720">
<SegmentTemplate duration="4"
media="seg_$Number$.m4s"/>
</Representation>
</AdaptationSet>
</Period>
</MPD>
재생 중 클라이언트 측 ABR 알고리즘은 지속적으로 네트워크 상태와 버퍼 상태를 모니터링합니다. 대역폭이 떨어지면 플레이어는 버퍼링을 피하기 위해 더 낮은 비트레이트로 다음 세그먼트를 요청합니다. 네트워크가 개선되면 비트레이트가 증가합니다.
비트레이트 전환은 세그먼트 경계에서 발생하므로 품질 변화가 사용자에게 거의 인지되지 않습니다. 최신 플레이어는 다양한 변형 간에 키프레임을 동기화하여 시각적 아티팩트 없이 전환이 이루어지도록 할 수 있습니다.
세 가지 주요 ABR 프로토콜이 스트리밍 비디오 시장을 지배하고 있습니다: Apple의 HLS, 오픈 표준 MPEG-DASH, Microsoft의 Smooth Streaming입니다. 각 프로토콜은 매니페스트 형식, 세그먼테이션 방법 및 암호화 메커니즘을 정의합니다.
| 프로토콜 | 개발자 | 매니페스트 | 세그먼트 | 암호화 |
|---|---|---|---|---|
| HLS | Apple | .m3u8(M3U 재생목록) | .ts 또는 .fmp4 | AES-128, SAMPLE-AES |
| MPEG-DASH | ISO/MPEG | .mpd(XML) | .m4s 또는 .webm | CENC(공통 암호화) |
| Smooth Streaming | Microsoft | .ismc(XML, IIS) | .ismv / .isma | PlayReady(AES-128 CT) |
HLS는 가장 널리 퍼진 ABR 프로토콜로, iOS, tvOS 및 macOS의 Safari에 내장되어 있습니다. 매니페스트 형식은 확장 M3U 재생목록을 기반으로 하며, 마스터 재생목록에는 다양한 비트레이트와 해상도의 변형 스트림에 대한 링크가 포함됩니다.
각 변형은 세그먼트 목록이 있는 자체 미디어 재생목록을 참조합니다. HLS는 슬라이딩 윈도우 메커니즘을 통해 라이브 방송을 지원하며, 오래된 세그먼트가 제거되고 도착하는 대로 새 세그먼트가 추가됩니다.
MPEG-DASH는 2012년 ISO/IEC 23009-1로 채택된 유일한 ABR 표준입니다. HLS와 달리 DASH는 XML 매니페스트(MPD — Media Presentation Description)를 사용하며 특정 컨테이너 형식에 종속되지 않습니다. fMP4, WebM 등을 지원합니다.
DASH는 유연한 세그먼테이션을 제공합니다. 동일한 스트림 내에서 세그먼트 길이를 다르게 할 수 있어 지연 시간과 HTTP 요청 오버헤드 간의 균형을 최적화합니다. 라이브 방송의 경우 DASH는 SegmentTemplate 패턴을 지원합니다.
Bitmovin 테스트(2025)에 따르면 HLS와 DASH는 시작 시간과 비트레이트 전환 빈도에서 비슷한 성능을 보여줍니다. HLS는 하드웨어 지원 덕분에 iOS에서 낮은 지연 시간을 제공하는 반면, DASH는 더 유연한 ABR 알고리즘 구성으로 인해 Android에서 선호됩니다.
ABR의 핵심은 다음에 어떤 변형을 요청할지 결정하는 비트레이트 선택 알고리즘입니다. 알고리즘에는 처리량 기반, 버퍼 기반 및 하이브리드의 세 가지 주요 계열이 있습니다. 각 접근 방식에는 장점과 한계가 있습니다.
처리량 기반 알고리즘은 이전 세그먼트의 다운로드 속도를 기반으로 네트워크 대역폭을 추정합니다. 알고리즘은 측정된 처리량의 80~90%를 초과하지 않는 최대 비트레이트를 선택하여 변동에 대한 여유를 둡니다.
이 접근 방식의 단점은 단기적인 속도 급등에 대한 민감도입니다. 세그먼트 다운로드 중 네트워크가 급격히 떨어지면 처리량 추정치가 너무 낮아져 불필요하게 품질이 저하됩니다.
버퍼 기반 알고리즘은 플레이어의 버퍼 점유율을 기반으로 결정을 내립니다. 버퍼가 70% 이상 채워지면 알고리즘이 비트레이트를 높이고, 버퍼가 20% 미만으로 떨어지면 버퍼링을 방지하기 위해 품질을 급격히 낮춥니다.
주요 장점은 단기적인 네트워크 저하 시 잘못된 품질 저하가 없다는 것입니다. 버퍼가 변동을 완화하기 때문입니다. 단점은 지속적인 대역폭 변화에 대한 느린 반응입니다.
ExoPlayer 및 AVPlayer와 같은 최신 플레이어는 처리량 추정과 버퍼 상태를 결합한 하이브리드 알고리즘을 사용합니다. ExoPlayer는 두 매개변수를 모두 고려하는 기본 DefaultTrackSelector ABR 알고리즘을 사용합니다.
2024~2025년에는 과거 데이터를 기반으로 미래 네트워크 변화를 예측하는 ML 기반 알고리즘이 활발히 도입되고 있습니다. Netflix, YouTube, Twitch는 자체 머신 러닝 모델을 사용하여 비트레이트 선택을 최적화하고 전환 횟수를 30~40% 줄입니다.
모바일 애플리케이션은 셀룰러 네트워크(4G/LTE, 5G)의 불안정성과 제한된 기기 컴퓨팅 성능으로 인해 ABR에 특별한 요구 사항을 제기합니다. 플레이어는 전력 소비와 데이터 사용량을 최소화하면서 네트워크 변화에 신속하게 적응해야 합니다.
OpenSignal(2025)에 따르면 도시 지역의 평균 4G 속도는 5~50Mbps이며, 이동 중에는 1Mbps까지 떨어질 수 있습니다. ABR 알고리즘은 터널이나 엘리베이터에 진입할 때 버퍼링을 피하기 위해 1~2세그먼트 내에서 비트레이트를 전환해야 합니다.
val trackSelector = DefaultTrackSelector(context).apply {
setParameters(buildUponParameters {
setMaxVideoSizeSd()
setAllowVideoMixedMimeTypeAdaptiveness(true)
setPreferredVideoRoleFlags(
roleFlags(C.ROLE_FLAG_DESCRIBES_VIDEO_AND_AUDIO)
)
})
}
val adaptiveTrackSelectionFactory =
AdaptiveTrackSelection.Factory()
val player = ExoPlayer.Builder(context)
.setTrackSelector(trackSelector)
.setMediaSourceFactory(
DashMediaSource.Factory(dataSourceFactory)
)
.build()
모바일 애플리케이션의 경우 빠른 초기 로딩(첫 프레임까지 2초 미만)이 중요합니다. 가장 낮은 사용 가능한 비트레이트로 재생을 시작한 다음 버퍼가 채워짐에 따라 품질을 높이는 start-low-and-rise 전략이 권장됩니다.
전력 소비도 중요합니다. 모든 비트레이트에 대해 하드웨어 가속 디코딩을 사용해야 합니다. 오래된 기기에서 높은 비트레이트(1080p 이상)의 소프트웨어 디코딩은 과열 및 스로틀링을 유발할 수 있습니다.
주요 ABR 품질 메트릭: 비트레이트 전환 횟수, 첫 프레임까지의 시간(TTFF), 총 시청 시간 대비 전환 비율입니다. QoE(품질 경험) 지수는 비트레이트, 전환 패널티 및 버퍼링 패널티의 가중 합계로 계산됩니다.
ABR 모니터링을 위해 플레이어에서 분석 데이터(현재 비트레이트, 버퍼 크기, 대역폭, 전환 수 및 유형)를 수집하는 것이 좋습니다. 이 데이터는 콘텐츠 제공자가 사용 가능한 비트레이트 세트를 최적화하고 특정 시청자에 맞게 세그먼테이션을 구성하는 데 도움이 됩니다.
자주 묻는 질문
Adaptive Bitrate(ABR)는 네트워크 상태에 따라 비디오 품질을 동적으로 변경하는 스트리밍 기술입니다. 플레이어는 비디오를 세그먼트로 나누고 각각에 최적의 비트레이트를 선택하여 모바일 기기에서 버퍼링 없는 원활한 재생을 보장합니다.
HLS는 M3U 재생목록과 전송 스트림(.ts)을 사용하는 Apple 프로토콜입니다. MPEG-DASH는 XML 매니페스트(.mpd)와 유연한 세그먼트 형식을 갖춘 개방형 ISO 표준입니다. HLS는 iOS에서 가장 효과적이며 DASH는 Android와 웹에서 더 적합합니다.
ABR은 버퍼링을 제거하여 인지 품질을 향상시킵니다. 네트워크가 나빠지면 비디오가 일시적으로 해상도를 낮출 수 있지만 중단되지는 않습니다. 사용자는 지속적인 버퍼링이 있는 끊기는 4K보다 부드러운 720p 비디오를 선호합니다.
ExoPlayer는 네트워크 대역폭과 버퍼 점유율을 고려하는 하이브리드 알고리즘 DefaultTrackSelector를 사용합니다. AdaptiveTrackSelection.Factory를 통한 사용자 지정이 가능한 처리량 기반 및 버퍼 기반 전략도 사용할 수 있습니다.
세그먼트 길이가 적응 빈도를 결정합니다. 짧은 세그먼트(2초)는 네트워크 변화에 더 빨리 반응하지만 더 많은 HTTP 요청을 생성합니다. 4~6초 세그먼트는 적응 속도와 오버헤드의 균형을 맞춰 모바일 기기에 최적입니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.