Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

HLSのメモ

基本的な事項の復習

HTTP Live Streamingの略
Appleの開発した動画ストリーミングのプロトコル
HTTPプロトコルを利用する

MPEG-2 TS

  1. 映像・音声データ
  2. MPEG-2 TSを10秒単位で細切れにし、エンコードする。エンコードビットレートに応じて幾つか作る。
  3. m3u8形式(プレイリスト、インデックスファイル)でこの細切れのファイルをどうつなげて再生するか指定する。

m3u8形式

m3u形式

パスないしURLの羅列、#はコメント

EXTM3U

拡張版

#EXTM3Uヘッダをファイル先頭につける。
#EXTINF 秒単位で長さ、タイトル等の拡張情報つける

例は以下を参照
M3U - Wikipedia

m3u8形式はm3u形式の拡張

   #EXT-X-VERSION:3
   #EXTM3U
   #EXT-X-TARGETDURATION:10

   #EXTINF:9.010,
   http://media.hoge.com/a.ts
   #EXTINF:9.001,
   http://media.hoge.com/b.ts
   #EXTINF:2.001,
   http://media.hoge.com/c.ts


これはVERSIONが3のプロトコルを満たす必要があることを意味する。EXTINFに浮動小数点数値でdurationを設定する。
プロトコルで必須なものは以下に記載がある。
Understanding the EXT-X-VERSION tag
developer.apple.com




詳しくは HTTP Live Streaming draft-pantos-http-live-streaming-19
draft-pantos-http-live-streaming-19 - HTTP Live Streaming


配信

httpなので通常のwebサーバでOK

クライアントの動き

1. まずインデックスファイルを取得する。
2. インデックスファイルで指定されたファイルをダウンロード
3. ある程度たまったらユーザに表示
4. #EXT-X-ENDLISTタグがある場合、終了、ない場合はは1に戻って新しいインデックファイルを取得

ツール

mediastreamsegmenter

MPEG-2 tsを分割する。インデックスファイルも作ってくれるコマンドラインツール。
man mediastreamsegmenter参照

mediafilesegmenter

エンコードされたメディアファイルを入力としてMPEG-2 tsにして分割。インデックスファイルも作ってくれる。

mediastreamvalidator

HLSと連動できるか検証するコマンド

variantplaylistcreator

mediafilesegmenter(-generate-variant-playlist付与)の出力から各種のビットレートのストリームを含むインデックスファイル作成

id3taggenerator

ID3メタデータタグ生成
アルバムのジャケット画像、アーティスト名、曲名、画像内の対象の名前と統計情報等も付与できる。
AVPlayerItem.timedMetaDataでアクセスできる。詳しくは「Timed
Metadata for HTTP Live Streaming」

mediastreamsegmenter(mediafilesegmenter)の-Fオプションでこのメタデータタグを追加できる。

セッションタイプ

VODとライブの二種類あり。

VOD

インデックスファイルが静的でその内容が全時間を表す。

ライブ

インデックスファイルは更新される。

暗号化

復号キーをインデクスファイルに付与しておく。