[アップデート] AWS Elemental MediaPackageでCMAF HLS Endpointをサポートしました!
はじめに
清水です。AWS Media Servicesの1つであり動画配信におけるジャストインタイムパッケージングサービスであるAWS Elemental MediaPackageに先日、CMAF HLS Endpointをサポートする機能アップデートがありました。
アップデートにより、これまでの既にサポートされているApple HLS、DASH-ISO(mpeg-DASH)、Microsoft Smooth(Microsoft Smooth Streaming)に加え、Common Media Application Format (CMAF)でのHLSエンドポイントを提供することができます。マニフェストファイルはHLSでの提供となりますが、CMAFの場合はセグメントファイル(メディア自体のフォーマット)にFragmented MP4を使うことができ、また従来のHLS形式よりも遅延を抑えられるとされています。H.265/HEVCやHDR、コンテンツ保護などの利点もありますね。
本エントリではこのCMAF HLS Endpointをさっそく使ってみたのでまとめてみたいと思います。
AWS Elemental MediaPackageでCMAF(Common Media Application Format) HLS Endpointを設定する
さっそくMediaPackageでCMAF HLS Endpointを設定してみます。マネージメントコンソールから新規にMediaPackageのChannelを作成するか、既存のChannelの詳細画面に進みましょう。
Endpoint欄の[Add endpoints](または[Add/edit endpoints])ボタンでEndpointの追加(編集)画面に進みます。
Packager settingsの項目に進み、Type欄でPackger typeを選択します。Common Media Application Format (CMAF)が選択できますね!
Common Media Application Format (CMAF)を選択肢たら、Packager settingsのすぐ下に生成されるHLS manifestの項目、IDの欄についても入力をしておきます。(入力しないとEndpoint生成時にエラーとなってしまいます。)
その他設定項目を確認して、[Save]ボタンで進みます。これでCMAF HLS用のEndpointが作成できました。Channelの詳細画面でPackage typeが"CMAF"となっていることが確認できます。
AWS Elemental MediaLiveと連携させてライブ配信を行い、CMAF HLS形式での配信を確認する
続いて、MediaLiveと連携させて実際にライブ配信を行い、CMAF HLS形式での配信を確認してみます。MediaLiveや配信ソフトウェアの設定は他のEndpoint形式と変わりありません。以下のエントリと同様の手順で行いました。
MediaLiveのチャンネルを開始し、配信ソフトウェアから映像を伝送します。MediaPackagerのマネージメントコンソールからPlayback previewで再生してみました。
続いてEndpoint URLをSafariで直接再生してみます。https://[16桁の英数字].mediapackage.ap-northeast-1.amazonaws.com/out/v1/[32桁の英数字]/[HLS manifest ID]/index.m3u8の部分をコピペしてSafariのURL欄に貼り付けると、再生が始まりますね!
参考までにマニフェストファイルの中身を確認してみました。Endpoint URLに対してcurlでアクセスして情報を参照してみます。
$ curl https://38XXXXXXXXXXXXXX.mediapackage.ap-northeast-1.amazonaws.com/out/v1/c5XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/MediaPackageChannel1EndpointCMAF/index.m3u8 #EXTM3U #EXT-X-VERSION:6 #EXT-X-STREAM-INF:BANDWIDTH=5711200,RESOLUTION=1920x1080,CODECS="avc1.640032,mp4a.40.2",AUDIO="audio" index_1.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=3511200,RESOLUTION=1280x720,CODECS="avc1.64001F,mp4a.40.2",AUDIO="audio" index_2.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=1861164,RESOLUTION=640x480,CODECS="avc1.4D401E,mp4a.40.2",AUDIO="audio" index_3.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=1036147,RESOLUTION=320x240,CODECS="avc1.4D400D,mp4a.40.2",AUDIO="audio" index_4.m3u8 #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="1",LANGUAGE="und",AUTOSELECT=YES,URI="index_5_0.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="2",LANGUAGE="und",AUTOSELECT=YES,URI="index_6_0.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="3",LANGUAGE="und",AUTOSELECT=YES,URI="index_7_0.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="4",LANGUAGE="und",AUTOSELECT=YES,URI="index_8_0.m3u8"
映像、音声が分離しているのが特徴的ですね。まずは映像部分を細く見てみます。
$ curl https://38XXXXXXXXXXXXXX.mediapackage.ap-northeast-1.amazonaws.com/out/v1/c5XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/MediaPackageChannel1EndpointCMAF/index_1.m3u8 #EXTM3U #EXT-X-VERSION:6 #EXT-X-INDEPENDENT_SEGMENTS #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:372 #EXT-X-MAP:URI="../MediaPackageChannel1_video_1_init.mp4" #EXTINF:6.000, ../MediaPackageChannel1_video_1_372.mp4?m=1525018523 #EXTINF:6.000, ../MediaPackageChannel1_video_1_373.mp4?m=1525018523 #EXTINF:6.000, ../MediaPackageChannel1_video_1_374.mp4?m=1525018523 #EXTINF:6.000, ../MediaPackageChannel1_video_1_375.mp4?m=1525018523 #EXTINF:6.000, ../MediaPackageChannel1_video_1_376.mp4?m=1525018523 #EXTINF:6.000, ../MediaPackageChannel1_video_1_377.mp4?m=1525018523 #EXTINF:6.000, ../MediaPackageChannel1_video_1_378.mp4?m=1525018523 #EXTINF:6.000, ../MediaPackageChannel1_video_1_379.mp4?m=1525018523 #EXTINF:6.000, ../MediaPackageChannel1_video_1_380.mp4?m=1525018523 #EXTINF:6.000, ../MediaPackageChannel1_video_1_381.mp4?m=1525018523
映像セグメントファイルの拡張子が.mp4となっていことがわかります。(従来のCMAFではないHLS形式では.tsでした。)続いて音声部分も見てみます。
$ curl https://38XXXXXXXXXXXXXX.mediapackage.ap-northeast-1.amazonaws.com/out/v1/c5XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/MediaPackageChannel1EndpointCMAF/index_5_0.m3u8 #EXTM3U #EXT-X-VERSION:6 #EXT-X-INDEPENDENT_SEGMENTS #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:372 #EXT-X-MAP:URI="../MediaPackageChannel1_audio_5_0_init.mp4" #EXTINF:5.995, ../MediaPackageChannel1_audio_5_0_372.mp4?m=1525018523 #EXTINF:5.995, ../MediaPackageChannel1_audio_5_0_373.mp4?m=1525018523 #EXTINF:5.995, ../MediaPackageChannel1_audio_5_0_374.mp4?m=1525018523 #EXTINF:6.016, ../MediaPackageChannel1_audio_5_0_375.mp4?m=1525018523 #EXTINF:5.995, ../MediaPackageChannel1_audio_5_0_376.mp4?m=1525018523 #EXTINF:5.995, ../MediaPackageChannel1_audio_5_0_377.mp4?m=1525018523 #EXTINF:5.995, ../MediaPackageChannel1_audio_5_0_378.mp4?m=1525018523 #EXTINF:6.016, ../MediaPackageChannel1_audio_5_0_379.mp4?m=1525018523 #EXTINF:5.995, ../MediaPackageChannel1_audio_5_0_380.mp4?m=1525018523 #EXTINF:5.995, ../MediaPackageChannel1_audio_5_0_381.mp4?m=1525018523
こちらも拡張子が.mp4となっていますね。映像、音声ともにFragmented MP4となっていることがわかりました。
まとめ
AWS Elemental MediaPackageで新たに追加された新機能、CMAF(Common Media Application Format) HLS Endpointを設定してみました。MediaPackageのEndpointの追加からCMAFを選択するだけで容易に使用することができますね。ただし、ブラウザがネイティブ対応しているか、またこれまでHLS対応していたPlayerがCMAF HLSにも対応するのか、など視聴環境は注意が必要かもしれません。セグメントファイルに使用されているFragmented MP4はHLS形式とMPEG-DASH形式の双方でサポートされることから、1種類のセグメントファイルでHLS、MPEG-DASH双方の形式のプレイリストでの配信、ということも実現できると言われています。今後のAWS Elemental MediaPackageのアップデートで、CMAFのMPEG-DASH形式配信なども期待できるのではないでしょうか。引き続き、AWS Elemental MediaPackage含めたAWS Media Servicesの新機能アップデートに注目していきたいと思います!