kenju's blog

About Programming, Mathematics, Security and Blockchain

動画配信におけるHTTP Live Streamingの概要について

動画配信プラットフォームを設計している。

Streaming/Download2種類の配信方法がある

配信方法には大きく分けるとStreaming/Downloadの2種類 + 他の動画プラットフォームを利用する手法が考えられる。

  • Streaming
  • Download
    • Pre Download
    • Progressive Download (On-Demand Download)
  • 他の動画配信プラットフォームに動画をUploadしてiframeで読み込む

今回は、他の動画配信プラットフォームに依存しない Streaming/Download それぞれの配信方法を見ていくこととする。

Streaming配信は

  • 都度再生に必要なデータを転送する。
  • クライアント側にデータのダウンロード保存が不要
  • 大容量高画質動画でも配信可能

Download配信はさらに2種類に分けられる。

Pre Download配信は

  • 再生前に全てのコンテンツを一括ダウンロードする
  • プレイ中は通信環境が悪かったり未接続でも問題ない

一方のProgressive Downloadは

  • クライアント側でダウンロードと再生を並行して処理する
  • 「擬似ストリーミング」と呼ばれることもある

Download配信共通の特徴としては

  • コンテンツの著作権によっては2次配布の問題が生じる

Streaming配信の実現手法

Streaming配信を実装する場合、SaaSを利用するか自前で配信サーバーを運用するかの2種類

HLS Protocolについて

AppleiPhone/iPadなどの端末上でメディアを再生するために標準化を進めたプロトコル

https://developer.apple.com/jp/documentation/StreamingMediaGuide.pdf

もともと回線が不安定なモバイル端末での高いUXでの動画視聴を目的としたプロトコルだから、それを意識した"Adaptive bitrate streaming"といった仕様が取り入れられている。

  • HTTPプロトコルを用いた配信が可能
  • Adaptive bitrate streamingを使うと、回線状況に応じて最適な画質の動画を配信することができる

導入事例

Cookpad

Cookpadの料理動画がAWS上にHLS配信サーバーを構築して運用している。エンコードのワークフローにElastic Transcoderを使って入る点や、クライアントからのUpload周りの要件とそれに対する実装方法が参考になる。

techlife.cookpad.com

Adaptive bitrate streamingについては以下の記事でも少し言及がある。理由はわからないが、「TS ファイルは色々な試行錯誤の結果、 5 秒単位で作成」とのこと。

techlife.cookpad.com