Akamai Diversity
Home > Media > 動画配信技術 その1 - HTTP Live Streaming(HLS)

動画配信技術 その1 - HTTP Live Streaming(HLS)


Akamaiでは多くの動画配信プロトコルをサポートしています。
特に最近はHTTPによる新しい動画配信技術の需要が高まってきており、HLS、HDS、SmoothStreamingでの配信が世界中で盛んとなっています。

そこで、このブログでは3回に分けてそれぞれの仕組みを解説していきたいと思います。
まず本日はHTTP Live Streaming(HLS)について解説します。

HLSはAppleが自社のiOS端末に向けに開発したHTTPによるメディア配信の規格です。

HLSによる配信のワークフローは以下のようになっています。
    1. コンテンツの準備
    2. コンテンツの再パッケージ化
    3. 再パッケージされたコンテンツのセグメント化
    4. ビデオストリームからオーディオトラックを抽出(Optional)
    5. 端末からHTTPによるリクエスト

1.に関して、HLSでは以下のコーデックに準拠する必要があります。

  • Input Containers:  F4V F4F F4M  MP4 FLV
  • Video:
 iPhone and iPod touch--H.264 Baseline Profile Level 3.0
 iPhone and iPad--Main Profile Level 3.1
  • Audio:  HE-AAC or AAC-LC up to 48 kHz, stereo audio
Video Codecに関しては端末によって再生可能なProfile Levelが違うことに注意して下さい。
詳しい情報はAppleのHPに記載されています。

  • iPhone
       3G--http://support.apple.com/kb/SP495
       3GS--http://support.apple.com/kb/SP565
       4G--http://www.apple.com/iphone/specs.html

  • iPod touch  
       2nd generation--http://support.apple.com/kb/sp496  
       3rd generation--http://support.apple.com/kb/SP570
       4th generation--http://support.apple.com/kb/SP594

  • iPad
       http://www.apple.com/ipad/specs/

2.では、1.で用意したメディアファイルをmpeg2-tsに再パッケージ化します。

そして3.のステップで時間幅が均等な短いメディアファイルの連続体にセグメント化/分割化します。
Appleはこの分割するコンテンツの長さは10秒を推奨としていますが、変更は可能です。

HLS.png


また、このステップでは図のようにセグメント化されたn.tsファイルの他に2つのm3u8ファイルが生成されます。
これらは個々のメディアファイルへのリファレンスを含むマスター及びインデックス・ファイルとなっており、中身はそれぞれ以下のようになっています。

Master File(.m3u8)

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=248268
http://customer-i.akamaihd.net/hls/live/streamID/xxxx/low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=248268
http://customer-i.akamaihd.net/hls/live/streamID-b/xxxx/low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=424806
http://customer-i.akamaihd.net/hls/live/streamID/xxxx/mid.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=424806
http://customer-i.akamaihd.net/hls/live/streamID-b/xxxx/mid.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=974806
http://customer-i.akamaihd.net/hls/live/streamID/xxxx/high.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=974806
http://customer-i.akamaihd.net/hls/live/streamID-b/xxxx/high.m3u8

Index File(.m3u8)

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:1412
#EXTINF:10,
http://customer-i.akamaihd.net/hls/live/streamID/mid/Seg_xxxx_0/mid_n.ts
#EXTINF:10,
http://customer-i.akamaihd.net/hls/live/streamID/mid/Seg_xxxx_0/mid_n.ts
#EXTINF:10,
http://customer-i.akamaihd.net/hls/live/streamID/mid/Seg_xxxx_0/mid_n.ts
#EXTINF:10,
http://customer-i.akamaihd.net/hls/live/streamID/mid/Seg_xxxx_0/mid_n.ts
#EXTINF:10,
http://customer-i.akamaihd.net/hls/live/streamID/mid/Seg_xxxx_0/mid_n.ts
#EXTINF:10,
http://customer-i.akamaihd.net/hls/live/streamID/mid/Seg_xxxx_0/mid_n.ts
#EXTINF:10,
http://customer-i.akamaihd.net/hls/live/streamID/mid/Seg_xxxx_0/mid_n.ts


上記はLive配信時の例となりますが、マスターファイルを見るとhigh,mid,lowの3つのビットレートでprimary/backupの2つのフィードが行われている事が分かります。
この例ではオーディオトラックの抽出は行われていませんが、抽出する場合はそのリファレンスがこちらのファイルに記載されます。

5.において、クライアント端末はまずこのマスターファイルをGETし、記載されているリンクのhigh,mid,lowの中から適切なインデックスファイルを取得します。

通常は一番低いレートから取得し、帯域に余裕があれば高いレートのファイルを取得するようPlayer側で判断されます。
これがAdaptive bitrate streamingと呼ばれる機能です。

インデックスファイルには実際のtsファイルへのリンクが記載されていますので、最新(一番下)のtsファイルを取得する事でLive映像が視聴可能となります。


以上がHLS配信の流れとなりますが、Akamaiではこれらのワークフローを全てプラットフォーム内で行うため、お客様は1.のコンテンツの用意もしくはLiveエンコーダを準備するだけで、すぐにHLS配信が可能となります。

また、全世界に分散された弊社エッジサーパを利用して配信する事により、安全で高パフォーマンスのメディア配信を実現しています。




Leave a comment