AWS Elemental MediaConvertを使った動画自動変換サービスを構築した備忘録

こんにちは!

今回はスマートフォンで撮影された動画を自動変換してストリーミング再生させるサービスの構築方法と
必要な知識について、備忘録も兼ねて箇条書きにしていきたいと思っています。
(具体的にここをこう設定しよう!という内容ではありません)

今回の要件

iPhoneやAndroidで撮影された動画を自動で変換し、
PC、iPhone、Androidでストリーミング再生ができるようにします。

必要なこと

動画ファイルの形式について知る
  • iPhoneで撮影した動画の拡張子は.MOV(video/quicktime)
  • Androidで撮影した動画の拡張子は.mp4(video/mp4)
  • ストリーミングする動画はHLS形式(HTTP Live Streaming)

    MOVとMP4をどちらもHLS形式にする必要がある!

    HLS形式については、以下のページが詳しいです。
    参考:
    HTTPライブストリーミングとは?| HLSストリーミング - Cloudflare
動画を変換する方法の調査
  • Elemental MediaConvertを使用して変換を行う
  • S3バケットではファイルがアップロードされたとき、イベントを送信できる
  • Lambdaでイベントをキャッチし、MediaConvertを起動
  • MediaConvertではあらかじめ「何をどの様に変換するか」のテンプレートを作成しておき、Lambdaでそれを指定する
  • 変換された動画は別のS3バケットに保存する
      同じバケットでも構わないが、設定によっては変換後のファイルが再帰的に変換され、
      利用料金が高額になる場合があるため注意が必要
各デバイスでストリーミング動画を再生するには?
  • PC、iPhone、AndroidのブラウザではiPhoneのみHLS形式の再生がネイティブで可能
  • 再生できないものではHLS.jsというクライアントライブラリを用いて再生する
セキュリティ関連
料金の計算
  • アップロードされる動画のサイズ×本数、どのくらいの期間保存するのか
    • S3(ストレージ代)
    • Lambda(実行回数)
    • MediaConvert(変換時間、回数など)
  • 変換後の動画のサイズ×本数
    • S3(ストレージ代)
    • CloudFront(リクエスト数、通信量など。HLSでのファイル分割数にもよる)
  • スマートフォンでも再生する場合、スマートフォンでのパケット代など...

以上、調査が必要な項目数は多いですが、何を調べれば良いのか分かっていればある程度は楽になると思います。
これからも、やったことは箇条書きでも良いので残しておきノウハウを貯めていきたいですね。

前へ

【GraphQL】GraphQL学習メモ

次へ

Laravel、VueのプロジェクトでHEIC形式の画像を扱うには