Adaptive Bitrate(ABR)は、ユーザーのチャネル帯域幅に応じてビデオ品質を動的に変更するストリーミング技術です。プログレッシブダウンロードとは異なり、ABRはビデオを2~10秒の小さなセグメントに分割し、再生中にそれらを切り替えます。Bitmovin Video Developer Report(2025)によると、86%のストリーミングサービスがモバイルデバイスでのスムーズな再生を確保するためにABRを使用しています。
重要ポイント
Adaptive Bitrate(ABR)は、ビデオファイルを異なるビットレートと解像度の複数のバリアントにエンコードし、プレーヤーがリアルタイムで適切なバリアントを自動選択するメディアコンテンツのストリーミング方法です。ユーザーは現在のインターネット速度に応じて、バッファリングなしで最高の品質を得られます。
従来のプログレッシブダウンロードとは異なり、ABRはファイル全体を読み込む必要がありません。プレーヤーは希望の品質の短いセグメントを要求し、セグメント間で別のビットレートに切り替えることができます。これにより、ネットワーク速度が常に変化するモバイルアプリケーションにとって不可欠な技術となっています。
適応型ストリーミング技術は、2006年にMove NetworksがABCテレビチャンネルの放送用に初めて商業的に実装しました。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アルゴリズムは常にネットワーク状態とバッファ状態を監視します。帯域幅が低下した場合、プレーヤーはバッファリングを避けるためにより低いビットレートで次のセグメントを要求します。ネットワークが改善されるとビットレートが上昇します。
ビットレートの切り替えはセグメント境界で行われ、品質の変化はユーザーにとってほとんど知覚できません。最新のプレーヤーは異なるバリアント間でキーフレームを同期できるため、視覚的なアーティファクトなしで切り替えが行われます。
3つの主要な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(Common Encryption) |
| 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の核心は、次にどのバリアントを要求するかを決定するビットレート選択アルゴリズムです。アルゴリズムには、スループットベース、バッファベース、ハイブリッドの3つの主要なファミリーがあります。各アプローチには長所と限界があります。
スループットベースアルゴリズムは、以前のセグメントのダウンロード速度に基づいてネットワーク帯域幅を推定します。アルゴリズムは、測定されたスループットの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~50 Mbpsの範囲で、移動中は1 Mbpsまで低下する可能性があります。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はAppleのプロトコルで、M3Uプレイリストとトランスポートストリーム(.ts)を使用します。MPEG-DASHは、XMLマニフェスト(.mpd)と柔軟なセグメント形式を備えたオープンなISO標準です。HLSはiOSで最も効果的で、DASHはAndroidとWebで適しています。
ABRはバッファリングを排除することで知覚品質を向上させます。ネットワークが劣化するとビデオは一時的に解像度を下げることができますが、停止することはありません。ユーザーは、一定のバッファリングがある途切れ途切れの4Kよりも、スムーズな720pビデオを好みます。
ExoPlayerは、ネットワーク帯域幅とバッファ使用率を考慮するハイブリッドアルゴリズム DefaultTrackSelectorを使用しています。AdaptiveTrackSelection.Factoryによるカスタマイズが可能なスループットベースおよびバッファベースの戦略も利用できます。
セグメントの長さが適応頻度を決定します。短いセグメント(2秒)はネットワーク変化への反応が速いですが、より多くのHTTPリクエストを生成します。4~6秒のセグメントは、適応速度とオーバーヘッドのバランスが取れており、モバイルデバイスに最適です。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。