モチベーション
仕事で動画技術を扱うことになったので学習のために情報をまとめます。
ストリーミング
動画のファイルサイズは一般的に大きく、全てダウンロードしてから再生するのではユーザーの待ち時間が増えてしまいます。
またライブ配信を実現するためにも録画が完了していない状態で動画の再生ができなければなりません。
これを解決するために、ダウンロードと再生を並行する「ストリーミング」という方式があります。
と、一口にいってもどのようにダウンロードして再生していくかルール(プロトコル)が必要です。
その代表的なプロトコルがHLSとMPEG-DASHになります。
HLSとMPEG-DASH
どちらもHTTP通信を軸としたストリーミング技術ですが、開発している企業が異なります。
- HLS
- HTTP Live Streaming
- 開発: Apple
- 仕様: IETF
- MPEG-DASH
- MPEG-Dynamic Adaptive Streaming over HTTP
- 開発: DASH-IF(DASH-Industry Forum)
- https://dashif.org/
- 参加企業(順不同): Microsoft, Netflix, Google, Ericsson, Samsung, Adobe
- 仕様: ISO
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の違いを実際やりとりするデータを軸に調べてみたいと思います。