2021/04/26

AWSを利用して、Unity(AVPro)で動画をストリーミング再生する

WRITER: q.q.vuong

ツール情報:

この記事で利用するのツール:

  • AVProVideo
  • Unity: 2018.4.2f1
  • AWS S3 Service
  • AWS Elemental MediaConvert Service

Streaming Mechanism:

ストリーミングのメカニズムでは、1つファイルを数パーツファイルに分けて、プレイバック時間で判定、適切なパーツをDLして、再生する。


システム構築図:

Service 備考
S3(input) MediaConvertによって変換処理する入力動画を保管する(管理者が動画をアップロードする)
S3 (output) MediaConvertによって変換処理した出力動画を保管する(ジョブにより自動でアップロードされる)
AWS Media MediaConvert S3(input)にアップされましたの動画をストリーミングファイルに変換するサービスです
その他 Network、SSLやCDNなどのためです

システムの流れ:

  1. 管理者がオリジナルの動画ファイルをInput用のS3に上げる。
  2. AWS Media Converter サービスで、変換ジョブを作成して、変換動画品質設定、Output用のS3を指定して、実行する。
  3. Unityに,AVProVideoアセットをインポートする。
  4. Output用のS3に、.m3u8拡張のファイルの公開パスをUnityのAVProVideoアセットにあるのPrefabに渡して、設定はここで完了します、UnityでPlayするとStreamingが開始する。

メモ:
AWS Media Converterを使わなくて、他のムービー変換ツール使って、ストリーミング用のムービーをOutput用のS3に上げる。次は、Step4と同様です。


AWS Media Convert サービス:

Bitrateについて:

簡単で定義すると:ビットレートは、特定の期間に送信されるデータの量を表す用語です。 これは、ビット(データ単位)とレート(レート)を組み合わせた単語です。Bitrate測定Unitは kbps(Kilobit per second)またはMbps(Megabit per second)です。

AWSサービスで、Bitrateタイプは3つあります、簡単な定義を説明しております:

  • QVBR (Quality-Defined Variable Bitrate):
    • OTT (Over the Internet、Over The Topも呼ばれます), VOD (Video On Demand)ときに使います。
    • QVBRを選択すると、エンコーダーは、指定したビデオ品質を維持するために、ビデオの各部分に使用する適切なビット数を決定します。 すべてのアセットに同じQVBR設定を使用できます。 エンコーダーは、ビデオの複雑さに合わせてファイルサイズを自動的に調整します
  • CBR (Constant Bitrate):
    • 固定帯域幅ネットワークでの配信では、ビットレートを一定にする必要がある時に使います。
    • CBRを選択すると、エンコーダーはファイルサイズと品質をビットレートに設定した値で制限します。 エンコーダーは、ビデオのすべての部分に同じビット数を使用します
  • VBR (Variable Bitrate):
    • 指定したサイズを下回らないように、合計ファイルサイズが必要な時に使います。
    • VBRでは、アセットの平均ビットレートを指定します。 エンコーダはビットを割り当てて、より多くのビットがビデオの複雑な部分に送られるようにします。 合計ファイルサイズ(コンテナ、パッケージ、およびオーディオデータを除く)は、指定した平均ビットレート(ビット/秒)にアセットの長さ(秒)を掛けたものになります。
    • VBRを使用する場合、各アセットの複雑さに合わせて平均ビットレートを調整すると、最良の結果が得られます。

Bitrateに参考資料を添付しております。

変換の設定:

こちらはブロードキャストおよびマルチスクリーン配信用にファイルベースのコンテンツを変換するサービスです。

  1. AWS Media Convertサービスを選択して、ジョブを作る。Input グループで、Input用のS3にあるの変換ファイルを選択

  2. Outputの設定をする。

    Streaming使うため、Apple HLSグループを選択する。(グループについての詳細はこの記事では記載しておりません)
    グループ作ったらこんな感じになります。

  3. 変換の品質を設定する。
    最初の設定はすべてDefaultで良いです:

    上記書いてあるのBitrateついてセクションを参考しながら、ビデオ使う目的と合わせて、ビデオ品質を選択します、この記事ではQVBR(AWSのデフォルトを使います)。個人意見ではこれが一番適切なBitrateタイプです。
  4. Audioの変換品質を設定する。
    この部分はDefaultまま使うが良いです。

Convertされました物はこんな感じです:

Unity Asset AVPro:

こちらはアセットの中身のPrefabをSceneに配置してから、Streaming のURL先を設定すれば再生できます。

Prefabパス:Assets/AVProVideo/Prefabs/

Prefab名でみるとわかるですが今回ではFullScreenで表示するのでFullScreenVideoのPrefabを選択しました。

上記のPrefabをSceneにDrag & Dropして、Inspectorで、MediaPlayerのComponentに.m3u8拡張のファイルの公開パスを貼って、DropDownところでAbsolute Path Or URLを選択したら設定完了です。

使用方法もガイドラインを参考してください。

アバター

q.q.vuong

開発Gクライアントエンジニア
メイン:Unity
興味はゲーム内システム仕組みを設計する。
最近はNFT、Unity(VR) x Blockchainに興味があります。