Edited at

動画のストリーミング技術について初歩的なことをまとめた


モチベーション

仕事で動画技術を扱うことになったので学習のために情報をまとめます。


ストリーミング

動画のファイルサイズは一般的に大きく、全てダウンロードしてから再生するのではユーザーの待ち時間が増えてしまいます。

またライブ配信を実現するためにも録画が完了していない状態で動画の再生ができなければなりません。

これを解決するために、ダウンロードと再生を並行する「ストリーミング」という方式があります。

と、一口にいってもどのようにダウンロードして再生していくかルール(プロトコル)が必要です。

その代表的なプロトコルがHLSとMPEG-DASHになります。


HLSとMPEG-DASH

どちらもHTTP通信を軸としたストリーミング技術ですが、開発している企業が異なります。


HLSとMPEG-DASHの対応状況

いくらかのブラウザはこれらのプロトコルに対応しています。


HLS

https://caniuse.com/#feat=http-live-streaming

2019/03/05時点では主要なところで、Edge, Safari, iOS-Safari, Android Browserが対応しているようです。

当たり前ですがApple主導なので、きっちり対応されています。


MPEG-DASH

https://caniuse.com/#search=mpeg-dash

2019/03/05時点ではEdgeのみ対応という状況でした。


HLS vs MPEG-DASH

実際のプロトコルの内容はまた別の機会に調べるとして、どちらがどういった点で優れたり異なっているのか気になります。

調べてみて大きな違いを感じたのは、CodecとDRMの差でした。


Codec

動画ファイルはサイズを小さくするために圧縮技術が使われています。

圧縮アルゴリズムのことをコーデックといいます。

動画の場合、映像と音声の2つからなるため映像についてはVideo Codec, 音声についてはAudio Codecとわけて考えます。

この2つでHLSとMPEG-DASHを比較すると以下のようになります。(2019/03/05時点での情報です)

Video Codec
Audio Codec

HLS
H.264, H.265
AAC, MP3

MPEG-DASH
縛りなし
縛りなし

HLSもMPEG-DASHもストリーミングに関するプロトコルなので、別途ビデオプレイヤー自体が各Codecに対応している必要があります。

それでもHLSにCodecの制限があるというのは、何か事情がありそうです。(ここは別の機会に調べてみることにします)


DRM

Digital Rights Managementの略でDRMで、デジタル著作権管理技術のことを指します。

HLSとMPEG-DASHの違いを調べるとDRMのことが話題に上がっていましたが、最近ではその差も少なくなっているように感じました。

(プロトコルの問題なのか、プレイヤーの実装の問題なのか、そのあたりの深いところにはたどり着けませんでした)

一応メインで使われる組み合わせとしては、間違ってないと思われるので表にまとめます。

DRM

HLS
Fairplay

MPEG-DASH
Widevine, PlayReady


まとめ

HLSとMPEG-DASHというストリーミング技術に触れてみましたが、まだまだ浅い部分しか調べられてません。

次はHLSとMPGE-DASHの違いを実際やりとりするデータを軸に調べてみたいと思います。