[アップデート] AWS Elemental MediaConvert で HLS 入力が使用できるようになりました

HLS ソースを頑張って MediaConvert で変換していた人々に朗報です
2021.04.05

こんにちは、大前です。

AWS Elemental MediaConvert(以下 MediaConvert)にて HLS 入力が利用可能になるアップデートがありましたので、おしらせします。

AWS ElementalMediaConvertでHLS入力が利用可能になりました

どんなアップデートか

文字通り、MediaConvert の入力ソースとして HLS が使用できる様になりました。具体的には、HLS のマニフェストファイル(m3u8)を入力として指定できる様になりました。マニフェストファイルは、親も子も指定可能です。

例えば、AWS Elemental MediaLive(以下 MediaLive)から S3 へのアーカイブ出力を行なったファイルに対して MediaConvert で変換をかけたい場合、今までは各種セグメントファイル(ts)を入力として指定して変換ジョブを作成する必要がありましたが、今回のアップデートにより、マニフェストファイルを入力として指定するだけで HLS の変換ジョブが作成できる様になりました。


また、複数の子マニフェストファイルを持つ親マニフェストファイルを指定した場合、最大帯域幅の子マニフェストファイルが MediaConvert 側で入力ソースとして選択されます。特定の子マニフェストファイルに紐づくセグメントをソースとして使用したい、といった要件がなければ親マニフェストファイルをソースとして指定しておけば良さそうです。

When the manifest is a parent that lists multiple child manifests, MediaConvert uses the child manifest with the highest bandwidth as the input source.

HLS 入力パッケージの要件

HLS 入力の利用にあたっては以下の要件がありますので、使用前に確認しておきましょう。

  • HLS入力パッケージの要件

  • メディアセグメントのビデオコンテナはMPEG-2TSである必要があります。

  • マニフェストファイルの互換性バージョン(で指定 EXT-X-VERSION)は4以下である必要があります。
  • マニフェストファイルは、ジョブを送信した後も同じままである必要があります。つまり、マニフェストにはタグが付いている EXT-X-ENDLISTか、EXT-X-PLAYLIST-TYPE値がビデオオンデマンド(VOD)に設定されている必要があり ます。
  • マニフェストがを使用する場合、EXT-X-BYTERANGE最初のサブレンジの開始は0である必要があり、次のサブレンジセグメントは前のサブレンジセグメントを継続する必要があります。
  • 入力に不連続性がある場合、それらはセグメントの先頭から開始する必要があります。つまり、入力はセグメントのサブ範囲に不連続性を持つことはできません。
  • パッケージは代替レンディションを使用してはなりません。つまり、マニフェストはEXT-X-MEDIAタグを使用できず、入力のオーディオはビデオと同じメディアセグメントにある必要があります。
  • マニフェストは、次のタグを使用できません。
    • EXT-X-KEY
    • EXT-X-MEDIA
    • EXT-X-PROGRAM-DATE-TIME
    • EXT-X-DATERANGE
    • EXT-X-I-FRAMES-ONLY
    • EXT-X-I-FRAME-STREAM-INF
    • EXT-X-SESSION-DATA
    • EXT-X-SESSION-KEY
    • EXT-X-INDEPENDENT-SEGMENTS
    • EXT-X-START
  • ジョブで高速トランスコーディングを使用する場合、入力HLSパッケージは次の追加要件に準拠するEXTINF 必要があります。の期間は、セグメント期間が累積されるときに認識できるエラーを回避するのに十分な精度で、10進浮動小数点を使用して指定する必要があります。

やってみた

では、実際に HLS 入力を使用して MediaConvert のジョブを作成してみます。

細かい手順は省きますが、MediaConvert でのファイル変換手順を確認したい方は以下ブログを参照ください。

入力ソースとして、S3 に保存されている以下 HLS ソースを使用しました。親マニフェストファイルとして sample.m3u8、子マニフェストファイルとして sample_xxx_1920x1080.m3u8sample_xxx_1280x720.m3u8 が存在する HLS ソースです。

MediaConvert のジョブ作成画面にて、入力ソースとして上記の親マニフェストファイルを指定します。

出力設定などを一通り行い、ジョブを実行します。今回は mp4 ファイルに変換するジョブを作成しました。 また、入力ファイルが親マニフェストファイルになっている事が確認できます。

ジョブが完了し、出力ファイルを確認すると、mp4 ファイルが問題なく出力されている事が確認できました。HLS を入力ソースしたジョブが実行できました!

おわりに

AWS Elemental MediaConvert で HLS を入力ソースとして指定できる様になりました。今まで HLS ソースを変換する際に ts ファイルを頑張って指定していた方には朗報となるアップデートではないでしょうか。

使用にあたり、一部要件や機能制限がありますので、そこだけご注意ください。

以上、AWS 事業本部の大前でした。

参考