LoginSignup
5
0

More than 3 years have passed since last update.

MediaPackage で VOD を Just-in-Time Packaging

Posted at

みなさん、こんにちは。
新メンバーが二人増えてチームがとても賑やかになった streampack の木村です。

さて、2019年5月17日に MediaPackage で VOD の Just-in-Time Packaging 機能がリリースされました。

AWS Elemental MediaPackage、Video On Demand 向けの Just-in-Time Packaging のサポートを追加

これまでは MediaLive などからのライブフィードのパッケージングのみの対応でしたが、これにより MP4 などのファイルからリアルタイムで HLS や DASH を生成できるようになったとのこと。

早速触ってみます!

ロールの作成

MediaPackage については既存のロールが用意されていないので、事前準備として VOD Packaging に必要な IAM ロールを作成します。

コンソールの IAM > ロール > ロールの作成 に進みます。
このロールを使用するサービス から一旦、EC2 を選んで 次のステップ: アクセス権限 を押下します。

スクリーンショット 2019-06-04 11.50.48.png

ポリシー

アタッチ ポリシーですが今回は動作確認するだけですので、単純に下記2つをアタッチします。

  • AmazonS3FullAccess
  • AWSElementalMediaPackageFullAccess

スクリーンショット 2019-06-04 11.51.14.png

スクリーンショット 2019-06-04 11.52.04.png

ロール名

ロール名を MediaPackage としてロールを作成します。

スクリーンショット 2019-06-04 11.54.20.png

信頼関係の編集

作成したロール MediaPackage を開き 信頼関係 を編集します。

"Service": "ec2.amazonaws.com"

"Service": "mediapackage.amazonaws.com"

に変更します。

スクリーンショット 2019-06-04 11.55.09.png

入力ソースの作成

最終的に ABR で出力するので、複数帯域の MP4 をあらかじめ用意します。
今回はソースファイルとして big_buck_bunny_1080p_h264.mov を用い、MediaConvert で以下の帯域のファイルを作成しました。

(c) copyright 2008, Blender Foundation / www.bigbuckbunny.org

スクリーンショット 2019-06-04 17.01.15.png

エンコードしたファイルは S3 の所定の場所に出力します。

スクリーンショット 2019-06-04 17.16.35.png

MediaPackage

いよいよパッケージングです。

今回は上記で作成した3種類の MP4 を元に ABR ストリームを生成しますが、ここで MediaPackage VOD Packaging 特有のお作法があります。

後述する Asset の項で入力ソースの指定をするのですが、ここで指定できるのが .smil.m3u8 のみとなります。

つまり、HLS 化し終わったコンテンツであればそのまま入力に指定して再パッケージングが可能ですが、素の MP4 の場合、SMIL ファイルを作成してそこに利用する MP4 ファイルを指定する必要があります。

SMIL

上記の例では以下のような SMIL ファイルを作成して S3 の同一ディレクトリーに配置します。

big_buck_bunny_1080p_h264_abr.smil
<?xml version="1.0" encoding="utf-8"?>
<smil title="">
  <body>
    <switch>
      <video src="big_buck_bunny_1080p_h264_1500.mp4">
      </video>
      <video src="big_buck_bunny_1080p_h264_1100.mp4">
      </video>
      <video src="big_buck_bunny_1080p_h264_750.mp4">
      </video>
    </switch>
  </body>
</smil>

こんな感じ。

MediaPackage で利用する SMIL は余計なエレメントやアトリビュートは無視されるので、上記最低限でOKです。
マニフェストに出力される画角やビットレートはソースファイルの Mediainfo から取得して反映しているようです。

スクリーンショット 2019-06-04 17.32.39.png

Packaging group

ようやっと MediaPackage です。
コンソールから MediaPackage にいくと Video on demand のメニューが追加されています。
はじめに Packaging groups から新しい Packaging group を作成します。

スクリーンショット 2019-06-04 12.36.05.png

id はテキトーに

スクリーンショット 2019-06-04 12.38.58.png

この Packaging group でパッケージの種類の選択と細かい設定が可能です。

対応しているパッケージングタイプは下記4種類です。

  • HLS
  • DASH
  • MS Smooth
  • CMAF

スクリーンショット 2019-06-04 12.41.26.png

スクリーンショット 2019-06-04 12.42.26.png

テストですので名前 idPackage type だけ変えて、あとは全部デフォルト設定で全種類作ってみました。

スクリーンショット 2019-06-04 12.48.24.png

Assets

Asset で入力ソースファイル、出力先、Packaging group などを設定します。
Ingest asset で新規アセットを作成します。

スクリーンショット 2019-06-04 12.51.09.png

Asset access

項目 設定値
S3 bucket name S3 バケットを選択
IAM role IAM ロールを選択

スクリーンショット 2019-06-04 18.25.59.png

Asset1

入力ソースとして利用可能な拡張子は .m3u8.smil のみです。
既に作成済みの HLS (.m3u8) があればそのまま指定可能で、HLS ABR のマスタープレイリストを指定すると、ちゃんと ABR で再パッケージングしてくれます。

MP4 を入力する場合は前述のように .smil ファイルを作成し指定します。

項目 設定値 備考
File name      ファイル名を指定  .m3u8 or .smil (.m3u8 のみリストに出現。.smil を指定する場合は完全手入力) 
Id Id を指定 File name に関連してオートコンプリート
Resource ID オプショナル DRM Server を利用する際に必要

スクリーンショット 2019-06-04 19.07.22.png

Packaging settings

項目 設定値
Packaging group 作成済みの Packaging Group を選択

スクリーンショット 2019-06-04 18.26.16.png

最後に Ingest assets を押すとアセットが作成されます。

スクリーンショット 2019-06-04 19.09.02.png

アセット作成は一瞬で、その中身には各パッケージング タイプの URL が記載されており、即座に再生が可能となります。

スクリーンショット 2019-06-04 19.10.52.png

再生

生成された CMAF を Mac Safari で再生してみます。

スクリーンショット 2019-06-04 19.14.46.png

ちゃんと再生されていますね!
もちろん HLS も DASH も Smooth も再生可能です。

制限

いくつか制限があるので注意です。

VOD Content Limits

困ったこと

今回試した中でなぜかは分かりませんが、単一コンテンツ(SMIL に1つだけ MP4 を記載)では問題ないのに、ABR だとうまく動作しないコンテンツがありました。

この場合、コンソール上で何もエラーが出ずにあたかも全てが正常に完了しているように見えます。
URL も生成されますが、実際にアクセスすると以下のように 404 が返って視聴できない状況です。

スクリーンショット 2019-06-05 11.05.04.png

CloudWatch にも異常は記録されず、エラーも吐かない為、どこが悪いのか特定できず。
まあコンテンツなのでしょうが・・・

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0