このガイドでは、Video Stitcher API でサポートされているマニフェスト オプション機能について説明します。これにより、合成された動画マニフェストをカスタマイズできます。マニフェスト オプションは、セッション作成リクエストで設定します。詳しくは次の記事をご覧ください。
- ライブ セッションを管理する
- Google アド マネージャーで有効になっているライブ セッションを管理する
- VOD セッションを管理する
- Google アド マネージャーで有効になっている VOD セッションを管理する
始める前に
Video Stitcher API の基本的なコンセプトと用語に精通していることを確認してください。詳細については、技術的な概要をご覧ください。
はじめに
デフォルトでは、合成された動画マニフェストには、ソース動画マニフェストと同じメディア レンダリングが含まれます。ソース マニフェストには、一部のプレーヤーでは再生できない複数のメディア レンディションが含まれている場合があります。たとえば、エンコードされた動画に H.264 と H.265 の両方の動画コーデックが含まれていても、あるデバイスのプレーヤーでは H.264 のみを再生できる場合があります。
動画マニフェストに含めるコーデックまたはビットレートを指定することで、合成された動画マニフェストで出力する動画レンダリングを指定できます。
マニフェストのオプション
ManifestOptions
オブジェクトには、合成された動画マニフェストをカスタマイズするためのオプションがいくつか用意されています。
HLS
ステッチされた HLS 動画マニフェストでは、次の項目をカスタマイズできます。
- コーデックでフィルタする
- 特定のビットレートのみを含める
- 動画レンディションを注文する
以降のセクションでは、次のソース動画マニフェストを前提とします。
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
h264/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2"
h264/hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=1920x1080,CODECS="hvc1.1.4.L126.B0,mp4a.40.2"
h264/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=100000,RESOLUTION=640x360,CODECS="hvc1.1.4.L126.B0,mp4a.40.2"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=200000,RESOLUTION=1280x720,CODECS="hvc1.1.4.L126.B0,mp4a.40.2"
h264/hd/index.m3u8
コーデックでフィルタする
コーデック別に動画レンディションをフィルタするには、セッションを作成するときにオプションの manifestOptions
フィールドにコーデックを設定します。たとえば、ステッチされたマニフェストに H.264 のみを表示するには、includeRenditions
配列にコーデックを設定します。
{ "manifestOptions": { "includeRenditions": [ { "codecs": "avc1.42e00a,mp4a.40.2", }, ], }, }
ステッチされたマニフェストには次のように表示されます。
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2"
h264/index.m3u8
特定のビットレートのみを含める
ビットレート別に動画レンディションをフィルタするには、セッションを作成するときにオプションの manifestOptions
フィールドにビットレートを設定します。たとえば、ステッチされたマニフェストに 2 つのビットレートのみを表示するには、includeRenditions
配列にビットレートを設定します。
{ "manifestOptions": { "includeRenditions": [ { "bitrateBps": 150000, }, { "bitrateBps": 440000, }, ], }, }
ステッチされたマニフェストには次のように表示されます。
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
h264/index.m3u8
ビットレート順に並べ替える
一部のプレーヤーは、動画レンディションの順序に敏感な場合があります。動画レンディションの順序は、次のように ascending
または descending
に設定できます。
{ "manifestOptions": { "bitrateOrder": "ascending", }, }
ステッチされたマニフェストには次のように表示されます。
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=100000,RESOLUTION=640x360,CODECS="hvc1.1.4.L126.B0,mp4a.40.2"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=200000,RESOLUTION=1280x720,CODECS="hvc1.1.4.L126.B0,mp4a.40.2"
h264/hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2"
h264/hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=1920x1080,CODECS="hvc1.1.4.L126.B0,mp4a.40.2"
h264/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
h264/fhd/index.m3u8
DASH
ステッチされた DASH 動画マニフェストでは、次の項目をカスタマイズできます。
- コーデックでフィルタする
- 特定のビットレートのみを含める
- 動画レンディションを注文する
以降のセクションでは、次のソース動画マニフェストを前提とします。
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000">
...
</Representation>
<Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h265" codecs="hvc1.1.4.L126.B0" width="1280" height="720" startWithSAP="1" bandwidth="200000">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
コーデックでフィルタする
コーデック別に動画レンディションをフィルタするには、セッションを作成するときにオプションの manifestOptions
フィールドにコーデックを設定します。たとえば、ステッチされたマニフェストに H.264 のみを表示するには、includeRenditions
配列にコーデックを設定します。
{ "manifestOptions": { "includeRenditions": [ { "codecs": "hvc1.1.4.L126.B0", }, ], }, }
ステッチされたマニフェストには次のように表示されます。
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h265" codecs="hvc1.1.4.L126.B0" width="1280" height="720" startWithSAP="1" bandwidth="200000">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
特定のビットレートを含める
ビットレート別に動画レンディションをフィルタするには、セッションを作成するときにオプションの manifestOptions
フィールドにビットレートを設定します。たとえば、ステッチされたマニフェストに 2 つのビットレートのみを表示するには、includeRenditions
配列にビットレートを設定します。
{ "manifestOptions": { "includeRenditions": [ { "bitrateBps": 150000, }, { "bitrateBps": 240000, }, ], }, }
ステッチされたマニフェストには次のように表示されます。
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
ビットレート順に並べ替える
一部のプレーヤーは、動画レンディションの順序に敏感な場合があります。動画レンディションの順序は、次のように ascending
または descending
に設定できます。
{ "manifestOptions": { "bitrateOrder": "descending", }, }
ステッチされたマニフェストには次のように表示されます。
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h265" codecs="hvc1.1.4.L126.B0" width="1280" height="720" startWithSAP="1" bandwidth="200000">
...
</Representation>
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000">
...
</Representation>
<Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>