AWS Elemental MediaPackageのVODパッケージング機能でHLSマニフェストファイルを操作してみた
はじめに
清水です。先日、下記のエントリにてAWS Elemental MediaPackageのVOD向けJust-in-Timeパッケージング対応のアップデートを紹介しました。
こちらのエントリではMediaPackageのVOD対応ということで、MediaConvertでHLS形式に変換したファイルをMediaPacakgeでJust-in-Timeパッケージングし、HLSの他にmpeg-DASHならびにCMAF(Common Media Application Format)で配信できることを確認しました。
本エントリではこのMediaPackageのVODパッケージング機能について、機能のひとつであるマニフェストファイルの操作に焦点をあててみます。具体的にはHLS形式で準備したVODファイルのマニフェストに対して、(1) マニフェストファイル名の変更、(2) ビットレート順序の変更、(3) 最小/最大ビットレートの指定、をそれぞれ行ってみました。
MediaConvertでHLS形式に変換した状態のマニフェストファイル
まずはMediaConvertでHLS形式に変換した、MediaPacakgeでパッケージング前のマニフェストファイルについて確認してみます。変換方法は以下のエントリの「HLS形式ファイルの準備」に記載したとおりです。MediaConvertでJob templatesのSystem templatesSystem-Ott_Hls_Ts_Avc_Aac
を使用してHLS形式に変換しました。
トップレベルマニフェストファイルSample-20190113-1.m3u8
の内容は下記です。
#EXTM3U #EXT-X-VERSION:3 #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-STREAM-INF:BANDWIDTH=620437,AVERAGE-BANDWIDTH=493605,CODECS="avc1.4d401f,mp4a.40.5",RESOLUTION=480x270,FRAME-RATE=14.985 Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=854658,AVERAGE-BANDWIDTH=712127,CODECS="avc1.4d401f,mp4a.40.5",RESOLUTION=640x360,FRAME-RATE=29.970 Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_640x360p_30Hz_600Kbps.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=1608153,AVERAGE-BANDWIDTH=1358561,CODECS="avc1.4d401f,mp4a.40.5",RESOLUTION=640x360,FRAME-RATE=29.970 Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_640x360p_30Hz_1200Kbps.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4438743,AVERAGE-BANDWIDTH=3699700,CODECS="avc1.640028,mp4a.40.5",RESOLUTION=960x540,FRAME-RATE=29.970 Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_960x540p_30Hz_3500Kbps.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4583263,AVERAGE-BANDWIDTH=3690942,CODECS="avc1.640028,mp4a.40.5",RESOLUTION=1280x720,FRAME-RATE=29.970 Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1280x720p_30Hz_3500Kbps.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=6519327,AVERAGE-BANDWIDTH=5222857,CODECS="avc1.640028,mp4a.40.5",RESOLUTION=1280x720,FRAME-RATE=29.970 Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1280x720p_30Hz_5000Kbps.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=8171335,AVERAGE-BANDWIDTH=6742975,CODECS="avc1.640028,mp4a.40.5",RESOLUTION=1280x720,FRAME-RATE=29.970 Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1280x720p_30Hz_6500Kbps.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=10633151,AVERAGE-BANDWIDTH=8803216,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=29.970 Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps.m3u8
以下のように、ビットレートの低い順から8つのABR(Adaptive Bitrate)で構成されているマニフェストファイルであることが確認できますね。(マニフェストファイル名からビットレートや解像度も確認できます。)
# | マニフェストファイル名 |
---|---|
1 | Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps.m3u8 |
2 | Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_640x360p_30Hz_600Kbps.m3u8 |
3 | Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_640x360p_30Hz_1200Kbps.m3u8 |
4 | Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_960x540p_30Hz_3500Kbps.m3u8 |
5 | Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1280x720p_30Hz_3500Kbps.m3u8 |
6 | Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1280x720p_30Hz_5000Kbps.m3u8 |
7 | Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1280x720p_30Hz_6500Kbps.m3u8 |
8 | Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps.m3u8 |
最もビットレートの低い、Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps.m3u8
を確認してみると、以下のように3秒ごとに分割されたtsファイルで構成されていることが確認できます。
#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:4 #EXT-X-MEDIA-SEQUENCE:1 #EXT-X-PLAYLIST-TYPE:VOD #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00001.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00002.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00003.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00004.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00005.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00006.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00007.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00008.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00009.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00010.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00011.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00012.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00013.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00014.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00015.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00016.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00017.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00018.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00019.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00020.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00021.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00022.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00023.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00024.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00025.ts #EXTINF:1, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_15Hz_400Kbps_00026.ts #EXT-X-ENDLIST
他のビットレートについても同様で、3秒ごとのtsファイルで構成されています。最もビットレートの高いSample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps.m3u8
を確認してみると以下となります。
#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:4 #EXT-X-MEDIA-SEQUENCE:1 #EXT-X-PLAYLIST-TYPE:VOD #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00001.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00002.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00003.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00004.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00005.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00006.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00007.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00008.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00009.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00010.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00011.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00012.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00013.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00014.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00015.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00016.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00017.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00018.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00019.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00020.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00021.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00022.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00023.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00024.ts #EXTINF:3, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00025.ts #EXTINF:1, Sample-20190113-1_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_30Hz_8500Kbps_00026.ts #EXT-X-ENDLIST
MediaPackageのデフォルト設定のHLSマニフェストファイル
ではここから、MediaPackageでパッケージングした場合のHLSマニフェストファイルを確認していきます。まずはMediaPackageでPackage groups作成、Package typeにApple HLS
を選択したときのデフォルト設定のマニフェスファイルを確認してみます。Management Consoleで下記画面のように設定しました。
Packageing groups作成後、先ほどのMediaConvertで変換したSample-20190113-1.m3u8
を指定してAssetsを作成、MediaPackageのegressポイントにアクセスしてマニフェスファイルを確認します。
$ curl https://ab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com/out/v1/edf3dff411504fecba3078d74c98b97e/9b7d39b0dfcf47be98eadc5994c8a0df/e74abe98da694177aa6a03f8377154b0/index.m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-STREAM-INF:BANDWIDTH=585556,AVERAGE-BANDWIDTH=511949,RESOLUTION=480x270,FRAME-RATE=14.985,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=849556,AVERAGE-BANDWIDTH=731949,RESOLUTION=640x360,FRAME-RATE=29.970,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_2.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=1668972,AVERAGE-BANDWIDTH=1426218,RESOLUTION=640x360,FRAME-RATE=29.970,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_3.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4704946,AVERAGE-BANDWIDTH=3956183,RESOLUTION=960x540,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_4.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4704946,AVERAGE-BANDWIDTH=3956183,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_5.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=6684972,AVERAGE-BANDWIDTH=5606218,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_6.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=8664946,AVERAGE-BANDWIDTH=7256183,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_7.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=11332996,AVERAGE-BANDWIDTH=9491249,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.2" 65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8.m3u8
URLは変わりますが、8つのビットレートで構成されるABRである点、またビットレートの低い順から並んでいる点などは変わりません。ただし、BANDWIDTHなどメタ情報については値や順序が変わっていることが確認できます。
続いて最もビットレートの低い、index_1.m3u8
を確認してみます。MediaConvertで変換した状態では3秒ごとに分割されたセグメントファイルでしたが、MediaPackageでは6秒ごとに分割されたセグメントファイルであることがわかります。(これは先ほどのManagement Console画面でSegument duration
を6sec
のデフォルト値で設定していたことと合致します。)
$ curl https://ab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com/out/v1/edf3dff411504fecba3078d74c98b97e/9b7d39b0dfcf47be98eadc5994c8a0df/e74abe98da694177aa6a03f8377154b0/index_1.m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:8 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_0.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_1.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_2.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_3.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_4.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_5.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_6.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_7.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_8.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_9.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_10.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_11.ts #EXTINF:3.804, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_1_12.ts #EXT-X-ENDLIST
最もビットレートの高いマニフェストファイルindex_8.m3u8
についても確認してみます。こちらも6秒ごとに分割されたセグメントファイルとなっています。
$ curl https://ab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com/out/v1/edf3dff411504fecba3078d74c98b97e/9b7d39b0dfcf47be98eadc5994c8a0df/e74abe98da694177aa6a03f8377154b0/index_8.m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:8 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_0.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_1.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_2.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_3.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_4.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_5.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_6.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_7.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_8.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_9.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_10.ts #EXTINF:6.006, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_11.ts #EXTINF:3.804, ../../../65dcec98e2214d96a8804bae4e1ee1e0/68e0cf62fff64f9e9655252b376ae430/index_8_12.ts #EXT-X-ENDLIST
MediaPackageでマニフェストファイル名を変更
続いてMediaPackageでマニフェストファイル名を変換してみます。Package configurationsの設定画面、Manifest settings
のManifest name
が設定箇所ですね。上記のデフォルト設定の場合の通り、何も指定しなければMediaPackageでパッケージングする際にトップレベルマニフェストファイル名はindex.m3u8
、続く階層のABR用各マニフェストファイルはindex_?.m3u8
となっていました。今回はManifest name
としてmaster
と入力してみます。
Assetsを作成してManagement ConsoleでエンドポイントとなるURLを確認してみます。以下のように、デフォルトだったindex.m3u8
ではなくmaster.m3u8
となっていることが確認できますね。
https://ab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com/out/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/abaefc902d6446df8819d01158221e27/master.m3u8
実際のトップレベルマニフェストファイルの中身も確認してみます。各ABR用のマニフェストファイルについてもmaster_?.m3u8
の形式となっています。
$ curl https://ab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com/out/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/abaefc902d6446df8819d01158221e27/master.m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-STREAM-INF:BANDWIDTH=585556,AVERAGE-BANDWIDTH=511949,RESOLUTION=480x270,FRAME-RATE=14.985,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/master_1.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=849556,AVERAGE-BANDWIDTH=731949,RESOLUTION=640x360,FRAME-RATE=29.970,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/master_2.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=1668972,AVERAGE-BANDWIDTH=1426218,RESOLUTION=640x360,FRAME-RATE=29.970,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/master_3.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4704946,AVERAGE-BANDWIDTH=3956183,RESOLUTION=960x540,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/master_4.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4704946,AVERAGE-BANDWIDTH=3956183,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/master_5.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=6684972,AVERAGE-BANDWIDTH=5606218,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/master_6.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=8664946,AVERAGE-BANDWIDTH=7256183,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/master_7.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=11332996,AVERAGE-BANDWIDTH=9491249,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.2" 65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/master_8.m3u8
MediaPackageでBitrate orderを変更
今度はMediaPackageでABRのビットレート順序(Bitrate order)を変更してみます。Packaging configuration作成時、Stream selection
を有効にし、Bitrate order
部分でAscending(昇順)かDescending(降順)かを選択します。
Ascending(昇順)
まずはAscending(昇順)にした場合を確認してみます。設定画面は上記Management Consoleの通りとなります。Assets作成後にエンドポイントURLから返されるレスポンスは下記の通りです。もともとの(MediaConvertでHLS形式に変換した段階での)トップレベルマニフェストファイルが昇順であったため、デフォルトと比べてURLのパス部分に変更はあれどビットレートの順序としては変更ありません。
$ curl https://ab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com/out/v1/edf3dff411504fecba3078d74c98b97e/324b9ae63b7f4551900777c9ee0b1e4c/1294e0964fce4128b82552541fb82b59/index.m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-STREAM-INF:BANDWIDTH=585556,AVERAGE-BANDWIDTH=511949,RESOLUTION=480x270,FRAME-RATE=14.985,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/09cb2b3d77d4472c954aac793737775b/index_1.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=849556,AVERAGE-BANDWIDTH=731949,RESOLUTION=640x360,FRAME-RATE=29.970,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/09cb2b3d77d4472c954aac793737775b/index_2.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=1668972,AVERAGE-BANDWIDTH=1426218,RESOLUTION=640x360,FRAME-RATE=29.970,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/09cb2b3d77d4472c954aac793737775b/index_3.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4704946,AVERAGE-BANDWIDTH=3956183,RESOLUTION=960x540,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/09cb2b3d77d4472c954aac793737775b/index_4.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4704946,AVERAGE-BANDWIDTH=3956183,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/09cb2b3d77d4472c954aac793737775b/index_5.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=6684972,AVERAGE-BANDWIDTH=5606218,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/09cb2b3d77d4472c954aac793737775b/index_6.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=8664946,AVERAGE-BANDWIDTH=7256183,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/09cb2b3d77d4472c954aac793737775b/index_7.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=11332996,AVERAGE-BANDWIDTH=9491249,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.2" 65dcec98e2214d96a8804bae4e1ee1e0/09cb2b3d77d4472c954aac793737775b/index_8.m3u8
Descending(降順)
続いて降順に設定した場合も確認してみます。Management Consoleで下記のようにBitrate order
でDescending
を選択します。
MediaPackageで返されるトップレベルマニフェストファイルは下記のようになりました。ビットレート順序がもともとの(MediaConvertで変換した段階での)昇順から、降順に変換されていることがわかります。
$ curl https://ab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com/out/v1/edf3dff411504fecba3078d74c98b97e/20d09455305b4e71b92768c2ec18bc27/aff7eb72ed784c75ab0aa163a6700116/index.m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-STREAM-INF:BANDWIDTH=11332996,AVERAGE-BANDWIDTH=9491249,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.2" 65dcec98e2214d96a8804bae4e1ee1e0/564364353f694ac3aa53bdd5ef85b6d9/index_1.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=8664946,AVERAGE-BANDWIDTH=7256183,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/564364353f694ac3aa53bdd5ef85b6d9/index_2.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=6684972,AVERAGE-BANDWIDTH=5606218,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/564364353f694ac3aa53bdd5ef85b6d9/index_3.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4704946,AVERAGE-BANDWIDTH=3956183,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/564364353f694ac3aa53bdd5ef85b6d9/index_4.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4704946,AVERAGE-BANDWIDTH=3956183,RESOLUTION=960x540,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/564364353f694ac3aa53bdd5ef85b6d9/index_5.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=1668972,AVERAGE-BANDWIDTH=1426218,RESOLUTION=640x360,FRAME-RATE=29.970,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/564364353f694ac3aa53bdd5ef85b6d9/index_6.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=849556,AVERAGE-BANDWIDTH=731949,RESOLUTION=640x360,FRAME-RATE=29.970,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/564364353f694ac3aa53bdd5ef85b6d9/index_7.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=585556,AVERAGE-BANDWIDTH=511949,RESOLUTION=480x270,FRAME-RATE=14.985,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/564364353f694ac3aa53bdd5ef85b6d9/index_8.m3u8
MediaPackageで最小/最大ビットレートの指定
MediaPackageでは最小/最大ビットレートの指定も可能です。こちらもPackaging configurationのStream selection
の項目で設定します。
最小ビットレート指定
最小ビットレートを2Mbps(=2,097,152bps)に指定してみます。Min video bitrate(bit/s)
のチェックボックスをonにして、最小ビットレート数値を入力します。
Assets作成後ににエンドポイントURLから返されるレスポンスは下記の通りです。2Mbps以下であった各ビットレート用の3つのマニフェストファイルが割愛され、合計で5つのビットレートからなるトップレベルマニフェストファイルとなっていることが確認できます。
$ curl https://ab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com/out/v1/edf3dff411504fecba3078d74c98b97e/adb60734949a477f9c4698c152e167ca/6aa08bf8d90c4c948d9df387533ddb9a/index.m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-STREAM-INF:BANDWIDTH=4704946,AVERAGE-BANDWIDTH=3956183,RESOLUTION=960x540,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/f259849595aa4659bae4642556b30371/index_1.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4704946,AVERAGE-BANDWIDTH=3956183,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/f259849595aa4659bae4642556b30371/index_2.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=6684972,AVERAGE-BANDWIDTH=5606218,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/f259849595aa4659bae4642556b30371/index_3.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=8664946,AVERAGE-BANDWIDTH=7256183,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/f259849595aa4659bae4642556b30371/index_4.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=11332996,AVERAGE-BANDWIDTH=9491249,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.2" 65dcec98e2214d96a8804bae4e1ee1e0/f259849595aa4659bae4642556b30371/index_5.m3u8
最大ビットレート指定
続いて最大ビットレートを5Mbps(=5,242,880bps)に指定してみます。Max video bitrate(bit/s)
のチェックボックスをonにして最大ビットレート数値を入力します。
MediaPackageで返されるトップレベルマニフェストファイルは下記のようになりました。5Mbpsより大きいビットレートとなるマニフェストファイルがカットされ、合計6つのビットレートからなるトップレベルマニフェストファイルとなっていることが確認できます。なお「5Mbpsより大きい」はマニフェストファイル中のビットレート情報(BANDWIDTHやAVERAGE-BANDWIDTH)ではなく、動画セグメントファイル自体のビットレートで判断しているのかと推測できます。
$ curl https://ab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com/out/v1/edf3dff411504fecba3078d74c98b97e/e0ac949925b5479aabd36cee7c8feefa/1af034e67e654f838706c47f9992a9d8/index.m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-STREAM-INF:BANDWIDTH=585556,AVERAGE-BANDWIDTH=511949,RESOLUTION=480x270,FRAME-RATE=14.985,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/7f4d65f838694d349928294eb4df2483/index_1.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=849556,AVERAGE-BANDWIDTH=731949,RESOLUTION=640x360,FRAME-RATE=29.970,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/7f4d65f838694d349928294eb4df2483/index_2.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=1668972,AVERAGE-BANDWIDTH=1426218,RESOLUTION=640x360,FRAME-RATE=29.970,CODECS="avc1.4D401F,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/7f4d65f838694d349928294eb4df2483/index_3.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4704946,AVERAGE-BANDWIDTH=3956183,RESOLUTION=960x540,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/7f4d65f838694d349928294eb4df2483/index_4.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=4704946,AVERAGE-BANDWIDTH=3956183,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/7f4d65f838694d349928294eb4df2483/index_5.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=6684972,AVERAGE-BANDWIDTH=5606218,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640028,mp4a.40.5" 65dcec98e2214d96a8804bae4e1ee1e0/7f4d65f838694d349928294eb4df2483/index_6.m3u8
まとめ
ジャストインタイムパッケージングサービスであるAWS Elemental MediaPackageのVODパッケージング機能を使って、HLSマニフェストファイルを操作してみました。マニフェストファイル名の変更、ビットレート順序(Bitrate order)の変更、最小/最大ビットレートの指定、それぞれを行いMediaPackageで生成されるマニフェストファイルを確認しました。
このようなマニフェストファイルの変更(特にビットレート順序変更や最小/最大ビットレートの指定)を行いたい場合、MediaConvertでの再変換、もしくはMediaConvertで変換して得られたマニフェストファイルに対して解析して処理を行う、などが必要でした。パッケージングサービスであるMediaPackageがVODにも対応したことで、これらの処理をMediaPackageの設定を使って容易に変更ができるようになりましたね。HLSの他、対応しているPackage typeであるmpeg-DASH、Smooth Streaming、CMAFでも同様のことが可能かと思います。引き続き、AWS Elemental MediaPackageはじめとしたAWS Media Servicesの機能詳細を追っていきたいと思います。