タイトルの情報源は知人です。動画のストリーミング簡単にできないのか -> S3にAPIあった気がするという噂を聞いたので、「S3 動画 ストリーミング」とググってみたら二番目に これ(Amazon CloudFront メディアストリーミングチュートリアル) が出てきた。
実際ググる前にある程度の想像(ユーザーが動画をアップロード・サービス都合の形式に変換・ストレージに保存・ストレージから配信という手順を踏みそうだな…)をしていて図的にはだいたいその通り
どうやらこのチュートリアルで詳しいことがわかるようなので、自分が理解するためにも要約して記事にまとめようと思ったのがこの記事の動機です。
動画の保存場所として使う。Simple Storage Serviceの略
大規模配信用の動画形式への変換を従量課金でしてくれるサービス
いわゆるCDN 低レイテンシー・高速転送を実現するための仕組み
動画の配信方法は二種類ある
1は簡単だがユーザーの通信料を無駄遣いする 動画を一部しか見ない場合でも全てDLしなければならない
ほとんどの場合2の方が適しているが少し追加で手間がかかる
主なのは上 たぶん他にもあるがHLSかDASH使えば良さそう 環境によってはMSSと言う感じかな
1つの動画ファイルを複数の動画とそのプレイリストに分割し、プレイヤーにはプレイリストを読み込ませて、仕様にしたがってセグメントした動画ファイルを読み込んで連続再生するというもの。 MSSに関しては、ぱっと見でわかる資料がファーストビューに見当たらなかったので上で説明したのと同じ仕組みかわからず。
細切れの動画ファイル .ts
と、プレイリスト .m3u8
参考: ライブ動画配信プロトコル(HTTP Live Streaming, HLS)の概要図解メモ(AbemaTV/FRESH!)
細切れの動画ファイル .ts
もしくは .mp4
と、プレイリスト .mpd
参考: MPEG DASHを知る
今回はWebブラウザ向けに出てるライブラリを探しました
Googleの検索ヒット数的には、 HLS:DASH = 756,000,000:2,450,000
なのでHLSの方がググラビリティが高そう
上に記したライブラリに関する記事は、 hls.js:dash.js = 1,820,000:28,800,000
なのでdash.jsの方がヒット数が多かった
STAR数的には、 hls.js:dash.js = 4,759:2,537
でhls.jsの方が多い
まぁAWSのページで
HLS 形式 (最も広くサポートされているストリーミングプロトコル)
とされているので、特に特殊な要件がなければHLSを選択するのがよさそうな気がします
Live Streaming(生放送)をしなければ、上記までの内容でインフラ組めそうです 具体的な実装には触れていないので、くれぐれも本実装前に少しずつ検証してください
参考になりましたら幸いです!では!