信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • テクログ

    【AWSでの動画配信】HLS 出力には Elastic Transcoder ではなく Elemental MediaConvert を使用するべき

    2020年4月入社の Hary です。今回は動画ライブストリーミング配信の話をさせて頂きます。要点結論だけ知りたい人はここを読めば大体分かります。HLS を使用したVOD形式の動画配信を AWS で行う場合、動画変換には Elastic Transcoder ではなく Elemental MediaConvert を使いましょう。そうしないと iOS で見た時プレイリストファイルを無限にダウンロードし続けます。背景ライブストリーミング配信 コロナの影響でリモートワークの必要性が再認識され、SE カレッジなどでも動画配信コンテンツ提供が多数派となりました。動画配信には様々な形態がありますが、ライブストリーミング配信が一般的です。ビデオオンデマンド (VOD) でもライブ中継でもほぼこれ一択と言っていいでしょう。簡単に言えば、ライブストリーミング配信は動画を時間分割したセグメントに分けて配信します。1時間の動画を1ファイルで扱えばダウンロードだけで時間がかかりますが、10秒毎に区切れば、再生に必要な直近の10秒から順にダウンロードすることでストレスなく視聴できます。これがライブストリーミング配信のキモです。 このライブストリーミング配信の主流は Apple が開発した HTTP Live Streaming (HLS) です。他にも様々な規格がありますが、デファクトスタンダードは HLS と言っていいでしょう。AWS での動画変換 Amazon Web Service (AWS) には動画変換サービスとして Elastic Transcoder と Elemental MediaConvert があります。大雑把に言えばMediaConvert の方が新しく、より多機能MediaConvert の方が基本的に値段が安いです。AWS は基本的に Mediaconvert の使用を推奨しています。Transcoder でなければできない事の方が少ないです。値段についても、一般的な動画であれば MediaConvert の値段は Transcoder の半分と思っていいです。動画の再生時間が短い(2分以下)場合、更に値段の差は開きます。詳しい比較は以下を見てください。ElasticTranscoder VS MediaConvert (Qiita)前提条件今回対象とする HLS は v3出力ファイルは以下の2種類 m3u8 ファイル:プレイリスト ts ファイル:時間分割されたセグメントHLS 変換に MediaConvert を使用するべき理由HLS の設定 EXT-X-PLAYLIST-TYPE を VOD に指定できないとライブ扱いされてプレイリストをずっと再読み込みするからです。MediaConvert が出力する m3u8 ファイルEXT-X-PLAYLIST-TYPE があります。値は VOD になっています。これにより、ビデオオンデマンド方式(プレイリストの更新はありえない)として解釈されます。#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:3 #EXT-X-MEDIA-SEQUENCE:1 #EXT-X-PLAYLIST-TYPE:VOD #EXTINF:3, movie3-sdk-hls_00001.ts #EXTINF:3, movie3-sdk-hls_00002.ts #EXTINF:3, movie3-sdk-hls_00003.ts . . . (省略) . . . #EXTINF:3, movie3-sdk-hls_00017.ts #EXTINF:3, movie3-sdk-hls_00018.ts #EXTINF:3, movie3-sdk-hls_00019.ts #EXT-X-ENDLIST Transcoder が出力する m3u8 ファイル変換元ファイルは違いますが、同じファイルから変換しても結果は同じです。EXT-X-PLAYLIST-TYPE がありません。これにより、ライブ方式(プレイリストの更新がされる;例:ライブ中継など)として解釈されます(参考元)。#EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-ALLOW-CACHE:YES #EXT-X-TARGETDURATION:7 #EXTINF:6.064000, movie2-hls-vod-check00000.ts #EXTINF:6.000000, movie2-hls-vod-check00001.ts #EXTINF:3.000000, movie2-hls-vod-check00002.ts #EXTINF:6.000000, movie2-hls-vod-check00003.ts #EXTINF:6.000000, movie2-hls-vod-check00004.ts #EXTINF:3.000000, movie2-hls-vod-check00005.ts #EXTINF:6.000000, movie2-hls-vod-check00006.ts #EXTINF:1.266667, movie2-hls-vod-check00007.ts #EXT-X-ENDLIST この場合、プレイリストの更新を想定して HLS プレイヤーは一定間隔でプレイリストファイル(*.m3u8)をダウンロードしようとします。PC などではキャッシュが働くようで特に問題は起きませんが、 iOS の Web ブラウザで見る場合、プレイリストのダウンロードを延々と繰り返します。まとめTranscoder で変換した HLS は VOD 扱いされないMediaConvert で変換した HLS は VOD 扱いされるVOD 扱いされない HLS だとプレイリストを延々とダウンロードし続ける上の例のような小さなファイルであれば大したファイルサイズではありませんが、それが延々とダウンロードされ続ければ話は別です。そうならないためにも、VOD 方式の動画配信を行いたい場合は MediaConvert を使用しましょう。